如何使用elasticsearch java
发布网友
发布时间:2022-04-20 16:43
我来回答
共1个回答
热心网友
时间:2023-08-03 11:48
用2个Map作为传参,一个是must,一个是should。代码如下:
//创建查询
SearchRequestBuilder srb = client.prepareSearch(INDEX);
srb.setTypes(ASK_TYPE);
srb.setSearchType(SearchType.DFS_QUERY_THEN_FETCH);
//分页
srb.setFrom((pageNo - 1) * pageSize).setSize(pageSize);
//按时间倒序
SortBuilder sortBuilder = SortBuilders.fieldSort("date").order(SortOrder.DESC);
srb.addAggregation(aggregation);//聚合
srb.addSort(sortBuilder);//排序
/**********************主要看这里 start*********************************/
if(null != mustMap && mustMap.size() > 0){
//创建一个查询
BoolQueryBuilder queryBuilder = QueryBuilders.boolQuery();
//这里查询的条件用map传递
for(String key : mustMap.keySet()){
queryBuilder.must(QueryBuilders.termQuery(key,mustMap.get(key)));
}
//这里查询的条件用map传递
for(String key : shouldMap.keySet()){
queryBuilder.should(QueryBuilders.termQuery(key,mustMap.get(key)));
}
//查询
srb.setQuery(queryBuilder);
}
/**********************主要看这里 end*********************************/
//请求
SearchResponse response = srb.get();
//更多看这里:http://www.sojson.com/tag_elasticsearch.html