如何使用Java客户端在Elasticsearch中查询多值数组字段?

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

使用适用于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个回答
0
投票

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

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

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