我在 ElasticSearch 的字段中确实有一个关键字类型的数据数组。我想用我想搜索的独占值搜索这个数组,即排除不包含在我的搜索关键字中的数组值。请参阅下面的详细信息。
谢谢!
我有以下弹性搜索索引映射:
"exgroups": {
"type": "keyword",
"eager_global_ordinals": true
},
使用以下示例数据:
"id": 1,
"exgroups": ["TSX"]
"id": 2,
"exgroups": ["TSX", "OTC", "NSD"]
我的搜索是这样的:
{
"bool" : {
"filter" : {
"term" : {
"exgroups" : {
"value" : "TSX"
}
}
}
}
}
我用过 MatchQueryBuilder、TermQueryBuilder、TermsQueryBuilder 都无济于事。根据 ElasticSearch TermQuery 的定义,它应该可以解决问题。https://www.elastic.co/guide/en/elasticsearch/reference/6.2/query-dsl-term-query.html。但它没有,可能是因为该字段是一个数组。
通常,Term*Query 的行为如下:
iterate all the documents, for each document
check if the exgroups contains 'tsx'
if it does, return the document
这将返回文档 1 和 2,因为文档 2 也包含 TSX。但是,我希望它只返回文档 1,而不返回数组中的其他文档。
我该如何做到这一点?
慕容3067478
相关分类