考虑以下数据集,我如何匹配同一字段的多个值?
{
"description": "My first description.",
"tags": ["A", "B", "C"]
},
{
"description": "My second description.",
"tags": ["A", "D", "E"]
}
在上面,我想创建一个查询,该查询与带有“ A” 和“ B”的“标签”的记录匹配。我目前正在使用与以下内容类似的内容:
query: {
terms: {
tags: ["A", "B"]
}
}
但是,这将返回两条记录,因为它们与 any 的值匹配。是否有能力保持动态(传递值数组)并返回包含所有“标签”的结果?
答案 0 :(得分:0)
从6.1版开始,您可以使用terms_set
查询(请参阅documentation),该查询使您可以按以下方式编写查询:
{
"query": {
"terms_set": {
"score": {
"tags": ["A","B"],
"minimum_should_match_script": {
"source": "2"
}
}
}
}
}