【问题标题】:How to query multi-valued array fields in Elasticsearch using Java client?如何使用 Java 客户端在 Elasticsearch 中查询多值数组字段?
【发布时间】:2020-04-10 08:01:22
【问题描述】:

使用适用于 Java v7.3 的 Elasticsearch 高级 REST 客户端

架构中有几个字段如下所示:

{
   "document_type" : ["Utility", "Credit"]
}

基本上一个字段可以有一个字符串数组作为值。我不仅需要查询特定的document_type,还需要一般的字符串查询。

我尝试了以下代码:

QueryBuilder query = QueryBuilders.boolQuery()
                .must(QueryBuilders.queryStringQuery(terms))
                .filter(QueryBuilders.termQuery("document_type", "Utility"));

...不返回任何结果。如果我删除“.filter()”部分,查询返回正常,但过滤器似乎阻止任何结果返回。我怀疑这是因为 document_type 是一个多值数组 - 也许我错了。我将如何构建查询以查询所有文档的特定术语,同时按 document_type 过滤?

【问题讨论】:

    标签: java rest elasticsearch lucene


    【解决方案1】:

    我认为,原因是查询错误。考虑使用terms 查询而不是术语查询。在java api 中也有一个等价物。

    这里很好地概述了查询 qsl 查询及其在高级 rest 客户端中的等效项:https://www.elastic.co/guide/en/elasticsearch/client/java-rest/current/java-rest-high-query-builders.html

    【讨论】:

      猜你喜欢
      • 2011-12-12
      • 2014-06-11
      • 1970-01-01
      • 2017-12-13
      • 2016-07-20
      • 1970-01-01
      • 2021-01-03
      • 2014-09-02
      • 1970-01-01
      相关资源
      最近更新 更多