2016-03-04 115 views
0

我有一个查询应该获取与这些ID匹配的任何行。该查询不返回任何内容,但应返回两行。如果我删除一个ID,我会返回一行。我假设它正在做一个AND而不是一个OR。我该如何改变这一点? (实际上,我还有更多的IDS查询)Elasticsearch使用筛选器查询ID布尔值或查询

{ 
    "query": { 
    "bool": { 
     "filter": [ 
     { 
      "term": { 
      "_id": 1273359 
      } 
     }, 
     { 
      "term": { 
      "_id": 480421 
      } 
     } 
     ] 
    } 
    } 
} 

回答

1

尝试ids filter,而不是

{ 
    "query": { 
    "bool": { 
     "filter": [ 
     { 
      "ids": { 
      "values": ["1273359", "480421"] 
      } 
     } 
     ] 
    } 
    } 
} 

注意,你本来还打算查询“查找文件id为1273359和1273359”,这是不可能在实践中。用上面的查询,你有一个OR而不是一个AND,它会起作用。