Elasticsearch丢弃包含查询超集的文档

时间:2018-08-21 07:18:45

标签: elasticsearch

假设我有3个文档:

{ "cities": "Paris Zurich Milan" }
{ "cities": "Paris Zurich" }
{ "cities": "Zurich"}

cities只是文本,我没有使用任何自定义分析器。
我要查询在巴黎和苏黎世都在cities中的文档,并且该文档没有其他城市。所以我只想获取第二个文档。

这是我到目前为止正在尝试的:

{
    "query": {
        "match_phrase": {
            "cities": "Paris Zurich"
        }
     }
}

但这也会返回第一个文档。 我该怎么办?

1 个答案:

答案 0 :(得分:1)

如果您不关心区分大小写,只需使用term查询:

{
  "query": {
    "term": {
      "cities.keyword": "Paris Zurich"
    }
  }
}

它将仅匹配字段的确切值。

另一方面,您可以创建自定义分析器,该分析器仍将存储字段的准确值(就像keyword一样):一个例外:存储的值将转换为小写字母,因此您可以找到{ {1}}和Paris Zurich。这是示例:

paris Zurich