2016-09-14 109 views
0

我有一个查询可以从Elastic Search Cluster中搜索provider_id。我正在使用下面的查询来获得单个provider_id的结果,但需要帮助弄清楚如何传递提供者列表。如何在弹性搜索查询中传递特定字段的值列表

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

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

回答

1

,你可以为not_analyzed然后用术语查询索引的PROVIDER_ID:

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

或作为一个过滤器,如果你不打算需要得分布尔查询:

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