RestHighLevelClient--查询条件:id精准查询、goodsName模糊查询并分页,怎么实现?
"goodsName": {
"type": "text",
"analyzer": "ik_max_word"
},
"id":{
"type":"long"
},
/**
* es查询商品信息
*
* @param req
* @return
*/
private SearchResponse getCommodityList(StandFillCommodityRequest req) {
SearchRequest searchRequest = new SearchRequest(index);
SearchSourceBuilder sourceBuilder = new SearchSourceBuilder();
//根据ID进行排序
sourceBuilder.sort("id", SortOrder.ASC);
//查询条件
BoolQueryBuilder mustQuery = QueryBuilders.boolQuery();
if (StringUtils.isNotBlank(req.getId())) {
mustQuery.must(QueryBuilders.termQuery("id", req.getId()));
}
if (StringUtils.isNotBlank(req.getGoodsName())) {
mustQuery.must(QueryBuilders.matchPhraseQuery("goodsName", (req.getGoodsName())));
}
//查询字段
StringBuffer fields = new StringBuffer();
fields.append("id").append(",");
fields.append("goodsName").append(",");
sourceBuilder.fetchSource(new FetchSourceContext(true, fields.toString().split(","), Strings.EMPTY_ARRAY));
//分页
sourceBuilder.query(mustQuery);
sourceBuilder.from((req.getPageNum() - 1) * req.getPageSize());
sourceBuilder.size(req.getPageSize());
sourceBuilder.trackTotalHits(true);
searchRequest.source(sourceBuilder);
//开始查询
SearchResponse response;
List<Map<String, Object>> list = null;
try {
response = client.search(searchRequest, RequestOptions.DEFAULT);
} catch (Exception e) {
e.printStackTrace();
return null;
}
return response;
}
这个模糊查询搞得我好蒙
什么问题 查不出来?