elasticsearch 用java client 多个and or 条件 怎么写

 我来答
JSON在线解析
2017-03-11 · 专注JSON在线解析工具,JavaDemo分享
JSON在线解析
采纳数:644 获赞数:1154

向TA提问 私信TA
展开全部

我刚刚特意写的,用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

本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式