使用适用于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进行过滤?
我认为,原因是查询错误。考虑使用terms查询而不是术语查询。 java api中也有一个等价物。
这里是对查询qsl查询及其在高级rest客户端中等效的一个很好的概述:https://www.elastic.co/guide/en/elasticsearch/client/java-rest/current/java-rest-high-query-builders.html