java - 使用 Java 高级 REST 客户端进行 ElasticSearch 多术语查询

标签 java elasticsearch

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);

BoolQueryBuilder上的filter/must/should方法,取决于你想要哪个上下文,如果你想要“或”,你可以使用should.

关于java - 使用 Java 高级 REST 客户端进行 ElasticSearch 多术语查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58246328/

相关文章:

django - 我如何在 django-haystack 搜索查询中使用 bool 字段

amazon-web-services - ELK堆栈(Elasticsearch,Logstash,Kibana)-logstash是必需的组件吗?

java - Lucene-6.4.2 : No class found DefaultSimilarity, 尝试添加查询。

java - 具有特定父类的切入点匹配类型

java - 盒子碰撞检测和弹跳

javascript - 使用 AJAX 在 elasticsearch 中查询动态聚合

docker - 如何在Docker Swarm中替换对IP的引用

Elasticsearch索引分片解释

java - 如何使用 Spring MVC 中的 @PathVariable 发送 Map<String, String>

java - 如何在 selenium 中处理 chrome 中的身份验证弹出窗口