java-high-level-rest-client提供了一种使用其代码下方显示的术语在elasticsearch上进行搜索的方法
SearchSourceBuilder sourceBuilder = new SearchSourceBuilder();
sourceBuilder.query(QueryBuilders.termQuery("user", "kimchy"));
但是我想对多个字段进行查询,例如:“user” =“kimchy”和/或“city” =“london”。
我看到了multi-search查询和多重匹配查询,但是它们没有执行我想要的操作。
谢谢您的帮助!!
最佳答案
试试这个:
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
。