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);
這句的意思是至少符合條件的條數,如果不寫這句的話,在整個查詢中隻要有任意符合條件的,将不在觸發該條件查詢。
大概模糊查詢就這樣啦!