同一字段的弹性搜索多个过滤器值

Elastic Search Multiple Filter values for the same field

假设我必须在 Elastic Search Index (ES 7.15) 中过滤汽车构造函数,其中字段 car_maker 映射到 keyword,在汽车制造商中的可能性有限字符串名称:

{
    "mappings": {
        "properties": {
            "car_maker": {
                "type": "keyword"
            }
        }
    }
}

GET /cars/_search
{

    "query": {
        "bool": {
            "filter": [{
                "term": {
                    "car_maker": "Honda"
                }
            }]
        }
    }
}

这与匹配的查询一起工作正常。 filter不会按要求参与分数计算。 现在我想为该查询过滤更多汽车制造商(假设是 should 查询):

{
 "query": {
    "bool": {
        "filter" : [
            {"term" : { "car_maker" : "Honda"}},
            {"term" : { "car_maker" : "Ferrari"}}
        ]
    }
 }
}

这是行不通的。我会收到来自 ES 查询引擎的任何错误,但也会收到任何结果。当然总是可以对 car_makercar_color 等不同字段应用更多过滤器,但是如何做相反的事情:应用更多值(HondaFerrari 等。 ) 到相同的过滤器字段 car_maker 就像上面的例子一样,没有条件化分数计算?

您可能想尝试以下过滤查询:

{
  "query" : {
    "bool" : {
      "filter" : {
        "terms" : {
          "car_maker" : ["Honda", "Ferrari"]
        }
      }
    }
  }
}