具有多个精确avlues的Elasticsearch查询

时间:2015-11-02 17:48:17

标签: elasticsearch

对于bool查询,我可以得到以下结果:

POST _search
{
 "query": {
    "bool": {
      "must": [
        { "match": { "city":  "LA" }},
        { "match": { "employee_id" : 123}}
     ]
    }
  }
}

如何为"employee_id" : [123, 234, 345]传递一份employee_id列表,例如{ "match": { "city": "LA" }。 ?基本上我想检索123, 234, 345

的employee_id city = 'LA'的文档

1 个答案:

答案 0 :(得分:1)

您可以使用term过滤条件查找单个完全匹配条款,并使用terms查找与条款列表中至少 n 匹配的文档。

如果您不需要文档排名(在完成完全匹配项时您不会这样做,因为文档的评分都相同),请使用filtered queries来提高查询效果。

{
  "query": {
    "filtered": {
      "filter": {
        "bool": {
          "must": [
            {
              "term": {
                "city": "LA"
              }
            },
            {
              "terms": {
                "employee_id": [ 123, 456, 789 ]
              }
            }
          ]
        }
      }
    }
  }
}