如何在弹性搜索查询中传递特定字段的值列表

时间:2016-09-14 16:36:34

标签: elasticsearch elasticsearch-plugin elasticsearch-ruby

我有一个查询要从provider_id搜索Elastic Search Cluster。我使用以下查询来获取单个provider_id的结果,但需要帮助确定如何传递提供者列表。

{
"query": {
    "bool": {
        "must": [{
            "match": {
                "message.provider_id": {
                    "query": 943523,
                    "type": "phrase"
                }
            }
        }]
    }
}
}

假设我想搜索provider_ids = [913523, 923523, 923523, 933523, 953523]那么我该如何修改查询?

1 个答案:

答案 0 :(得分:2)

您可以将provider_id编入索引为not_analyzed,然后使用术语查询:

POST /test_index/_search
{
    "query": {
        "terms": {
           "message.provider_id": [
              "913523", "923523", "923523", "933523", "953523"
           ]
        }
    }
}

或如果您不需要得分,则使用过滤器作为bool查询:

POST /test_index/_search
{
   "query": {
      "bool": {
         "filter": [
            {
               "terms": {
                  "message.provider_id": [
                      "913523", "923523", "923523", "933523", "953523"
                  ]
               }
            }
         ]
      }
   }
}