Elasticsearch - 在筛选查询中同时使用术语和bool会产生错误

时间:2015-10-04 02:53:20

标签: symfony elasticsearch

我正在为搜索构建查询,但却一直在寻找一个字段(位置)的多个值。这样,它可以不止一个城市。 我的查询如下:

{
    "query" : {
        "filtered" : {
            "filter" : {
                "terms" : { 
                    "location" : [Baku, Paris, London]
                },
                "bool" : {
                    "must" : ...
                }
            }
        }
    }
}

结果为400:SearchPhaseExecutionException ... QueryParsingException

可能是什么原因?

我使用的条款文档:https://www.elastic.co/guide/en/elasticsearch/guide/current/_finding_multiple_exact_values.html

1 个答案:

答案 0 :(得分:1)

您的terms过滤器必须位于bool/must子句中,如下所示。并且不要忘记用双引号括起你的城市名字。

{
  "query": {
    "filtered": {
      "filter": {
        "bool": {
          "must": [
            {
              "terms": {
                "location": [ "Baku", "Paris", "London" ]
              }
            },
            ...
          ]
        }
      }
    }
  }
}