我有一些类似于以下格式的文档:
{
"tags" => [
"tag1",
"tag2",
],
"name" => "Example 1"
}
{
"tags" => [
"tag1",
"tag3",
"tag4"
],
"name" => "Example 2"
}
我现在想要做一个术语搜索,给定的数组可能如下:
[tag1, tag3]
期望击中应该在哪里:
{
"tags" => [
"tag1",
"tag3",
"tag4"
],
"name" => "Example 2"
}
然而,当我执行以下查询时:
GET _search
{
"query": {
"filtered": {
"query": {
"match_all": {}
},
"filter": {
"bool": {
"must": [
{
"terms": {
"tags": [
"tag1",
"tag3"
]
}
}
]
}
}
}
}
}
我得到了"示例1"和"示例2"的结果,因为两个示例中都包含标签1或标签3。根据terms的文档,我发现terms实际上是一个包含查询。
在这种情况下,我如何确保在查询标记1和标记3时,只有"示例2"是命中的?