【发布时间】:2015-11-02 04:31:15
【问题描述】:
我的文件看起来像:
{
"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 都包含 tag1 或 tag3,因此我将“示例 1”和“示例 2”都作为匹配项。通过查看术语的文档,我发现术语实际上是一个包含查询。
在这种情况下,如何确保示例 2 是使用 tag1 和 tag3 查询时的唯一命中?
【问题讨论】:
-
您需要至少特定的 2 个元素,或者具有该确切数组的文档?
标签: arrays elasticsearch term