术语过滤器与多个值不匹配

时间:2015-06-27 10:42:09

标签: elasticsearch

我的文档映射:

 ...
 "user.id": {
   "type": "string",
   "index": "not_analyzed"
  },
  ...

索引的示例文档:

{ "user": { "id": "123" } }

使用以下查询:

"query" : {
  "filtered" : {
    "query" : {
      "match_all" : { }
    },
    "filter" : {
      "terms" : {
        "user.id" : [ "123, foo" ]
    }
  }
}

我没有点击。

虽然只有“123”的术语过滤器成功匹配。

根据我在documentation中所阅读的内容,过滤条件应与所提供值的“任意”匹配。所以在我的情况下,“foo”与userId不匹配,那么文档应该匹配,因为“123”匹配。

我是否误解了术语过滤器?

1 个答案:

答案 0 :(得分:1)

您要将"123, foo"作为单个字符串提交。您的集合中没有包含该用户ID的文档。如果您提交" 123"和" foo"作为单独的字符串,即"user.id" : [ "123", "foo" ],您的示例文档应与查询匹配。