Spring Cloud 中整合ES上篇已经处理了,这篇简单记录在ES中进行模糊搜索查询的试下
- 单字段模糊搜索
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);
这句的意思是至少符合条件的条数,如果不写这句的话,在整个查询中只要有任意符合条件的,将不在触发该条件查询。
大概模糊查询就这样啦!