springboot 2.3 集成Elasticsearch4.0.0

1,625 阅读1分钟

我linux上的版本是 7.7.1 下载地址:www.elastic.co/cn/download…
linux安装教程网上很多,自己找哈。

不废话,直接上代码

1,pom里头引用

<dependency>

<groupId>org.springframework.boot</groupId>

<artifactId>spring-boot-starter-data-elasticsearch</artifactId>

</dependency>

2,yml文件里头配置:

spring:
    elasticsearch:
        rest:
            uris: http://192.168.5.227:9200

3,定义一个实体类

@Data
@NoArgsConstructor
@AllArgsConstructor
@Document(indexName = "user",shards = 1,replicas = 0)
public class UserTest implements Serializable {

    @Id
    private int id;

    @Field(type = FieldType.Text,analyzer = "ik_max_word")
    private String name;

    @Field(type = FieldType.Integer)
    private int age;

    @Field(type = FieldType.Keyword)
    private String hobby;

}

4,使用方法,创建索引库,保存实体

@Service("elDataService")
public class ElDataServiceImpl implements ElDataService {

    @Autowired
    private ElasticsearchRestTemplate elasticsearchRestTemplate;

    @Autowired
    private ElasticsearchRepository<UserTest, Integer> elasticsearchRepository;

    @Override
    public void createIndex() {
        //设置索引信息(绑定实体类)  返回IndexOperations
        IndexOperations operations = elasticsearchRestTemplate.indexOps(UserTest.class);
        //创建索引库
        operations.create();
        //为该IndexOperations绑定到的实体创建索引映射。  有一个为给定类创建索引的重载,需要类的字节码文件
        Document mapping = operations.createMapping();
        //将刚刚通过类创建的映射写入索引
        operations.putMapping(mapping);
    }

    @Override
    public void putElData(UserTest userTest) {
        //存储单个实体
        elasticsearchRepository.save(userTest);
    }
    
}

5,查询

@Service("userRespository")
public interface UserRespository extends ElasticsearchRepository<UserTest, Integer> {

    List<UserTest> findByName(String name);

    List<UserTest> findByAgeBetween(int left, int right);
    
}

6,测试

 @Test
    void testEl() throws ServiceException {
        //elDataService.createIndex();
        for (int i = 0; i < 10; i++) {
            UserTest userTest = new UserTest();
            userTest.setId(i);
            userTest.setAge(10 + i);
            userTest.setHobby("篮球");
            userTest.setName("编号" + i);
            elDataService.putElData(userTest);
        }
    }

    @Test
    void queryEl() {
        List<UserTest> userTestList = userRespository.findByName("编号");
        System.out.println("userTestList = " + JSON.toJSONString(userTestList));
    }

输出结果:

userTestList = [{"age":10,"hobby":"篮球","id":0,"name":"编号0"},{"age":11,"hobby":"篮球","id":1,"name":"编号1"},{"age":12,"hobby":"篮球","id":2,"name":"编号2"},{"age":13,"hobby":"篮球","id":3,"name":"编号3"},{"age":14,"hobby":"篮球","id":4,"name":"编号4"},{"age":15,"hobby":"篮球","id":5,"name":"编号5"},{"age":16,"hobby":"篮球","id":6,"name":"编号6"},{"age":17,"hobby":"篮球","id":7,"name":"编号7"},{"age":18,"hobby":"篮球","id":8,"name":"编号8"},{"age":19,"hobby":"篮球","id":9,"name":"编号9"}]