使用Java高级REST客户端进行ElasticSearch多项查询

问题描述 投票:0回答:1

java-high-level-rest-client提供了一种使用其代码下方显示的术语在elasticsearch上进行搜索的方法

SearchSourceBuilder sourceBuilder = new SearchSourceBuilder(); 
sourceBuilder.query(QueryBuilders.termQuery("user", "kimchy")); 

但是我想在多个字段上进行查询,例如:“ user” =“ kimchy”和/或“ city” =“ london”。

我看到了multi-search查询和多重匹配查询,但它们没有执行我想要的操作。

感谢您的帮助!

java elasticsearch
1个回答
0
投票

尝试一下:

BoolQueryBuilder boolQueryBuilder = QueryBuilders.boolQuery();
boolQueryBuilder
    .filter(QueryBuilders.termQuery("user", "kimchy"))
    .filter(QueryBuilders.termQuery("city", "london"));
SearchSourceBuilder sourceBuilder = new SearchSourceBuilder();
sourceBuilder.query(boolQueryBuilder);

filter/must/should上的BoolQueryBuilder方法,取决于所需的上下文,如果要“或”,则可以使用should

© www.soinside.com 2019 - 2024. All rights reserved.