SpringBoot整合Elasticsearch

上一篇 << 下一篇 >>>Linux环境安装Elasticsearch


1.引入依赖


org.springframework.boot
spring-boot-starter-data-elasticsearch

2.es配置

spring:
  data:
    elasticsearch:
      ####集群名称
      cluster-name: myes
      ####地址,集群由逗号隔开
      cluster-nodes: 10.211.55.16:9300

3.es配置

@RestController
public class EsController {

   @Autowired
   private UserReposiory userReposiory;

   @RequestMapping("/addUser")
   public UserEntity addUser(@RequestBody UserEntity user) {
      return userReposiory.save(user);
   }

   @RequestMapping("/findUser")
   public Optional findUser(String id) {
      return userReposiory.findById(id);
   }

}
public interface UserReposiory extends CrudRepository {

}
@Document(indexName = "jarye", type = "user")
@Data
public class UserEntity {
   @Id
   private String id;
   private String name;
   private int sex;
   private int age;
}

Tips:id如果不传的话,会自动生成,如果传了的话,则使用当前传输的id

4.es复杂查询

@RequestMapping("/search")
   public List search(String name, String describe,int page,int pageSize
                              /*@PageableDefault(page = 0, value = 2) Pageable pageable*/) {
      /**查询条件*/
      BoolQueryBuilder boolQuery = QueryBuilders.boolQuery();
      /**模糊查询*/
//    boolQuery.filter(QueryBuilders.wildcardQuery("itemDesc", "*手机*"));
      //当前关键字在多个字段里查询
//    QueryBuilders.multiMatchQuery(name,"name","describe");

      if (!StringUtils.isEmpty(name)) {
         /**对name字段进行分词模糊匹配*/
         MatchQueryBuilder matchQuery = QueryBuilders.matchQuery("name", name);
         boolQuery.must(matchQuery);
      }
      if (!StringUtils.isEmpty(describe)) {
         /**对describe字段精准匹配*/
         TermQueryBuilder describe1 = QueryBuilders.termQuery("describe", describe);
         boolQuery.must(describe1);
      }
      //构建查询
      SearchQuery query = new NativeSearchQueryBuilder()
            .withFields("name","describe","shartime")
            .withQuery(boolQuery)
            .withSort(SortBuilders.fieldSort("shartime").order(SortOrder.DESC))
            .withPageable(PageRequest.of(page,pageSize))
            .build();
      Iterable search = cloudDiskDao.search(query);
      return Lists.newArrayList(search);
   }

推荐阅读:
<< << << << << << << << <<<正向索引和倒排索引区别
<< << << << << << << <<

你可能感兴趣的:(SpringBoot整合Elasticsearch)