用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