2015-11-02 76 views
0

对于布尔查询,我能得到的结果与以下内容:Elasticsearch查询与多个确切avlues

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

如何传递EMPLOYEE_ID的的它的列表这样"employee_id" : [123, 234, 345]{ "match": { "city": "LA" }。 ?基本上我想检索雇员标识123, 234, 345city = 'LA'

回答

1

可以使用term过滤器来查找一个精确匹配项,并terms文件来查找文档,其比赛至少n项的列表

如果您不需要文档排名(在进行精确词条匹配时您不需要,因为这些文档的得分都相同),请使用filtered queries来提高查询性能。

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