天天看点

Spring Cloud 中使用 ES(elasticsearch ) 7.1.1进行模糊搜索

Spring Cloud 中整合ES上篇已经处理了,这篇简单记录在ES中进行模糊搜索查询的试下

  1. 单字段模糊搜索
QueryBuilders.wildcardQuery("PEOPLE_NICKNAME.keyword", "*"+req.getNickName()+"*");
           

其中使用了通配符查询,注意使用搜索是要在字段名后边加个**.keywoord**,然后将入参 req.getNickName 进行组装。

2. 多字段模糊查询(多个字段中中任意符合条件的)

QueryBuilder     moreLikeThisTextQuery = QueryBuilders.wildcardQuery("MSG_TEXT.keyword","*"+req.getContent()+"*");
   QueryBuilder     moreLikeThisNickNameQuery = QueryBuilders.wildcardQuery("PEOPLE_NICKNAME.keyword", "*"+req.getContent()+"*");
   QueryBuilder     moreLikeThisSignatureQuery = QueryBuilders.wildcardQuery("PEOPLE_SIGNATURE.keyword", "*"+req.getContent()+"*");
     BoolQueryBuilder boolQueryBuilder = new BoolQueryBuilder();
    	  boolQueryBuilder.should(moreLikeThisTextQuery);
          boolQueryBuilder.should(moreLikeThisNickNameQuery);
          boolQueryBuilder.should(moreLikeThisSignatureQuery);
          boolQueryBuilder.minimumShouldMatch(1);
           

其中要注意的是 boolQueryBuilder.minimumShouldMatch(1);

这句的意思是至少符合条件的条数,如果不写这句的话,在整个查询中只要有任意符合条件的,将不在触发该条件查询。

大概模糊查询就这样啦!

继续阅读