Elasticsearch使用过滤器布尔或查询

时间:2016-03-04 13:39:55

标签: elasticsearch

我有一个查询,应该获取与这些ID之一匹配的任何行。查询不返回任何内容,但应返回两行。如果我删除一个id,我会退回一行。我假设它做的是AND而不是OR。我怎么能改变这个? (实际上我有更多的ID要查询)

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

2 个答案:

答案 0 :(得分:2)

尝试ids filter而不是

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

请注意,您的意思是“查找ID为1273359 AND 1273359的文档”,这在实践中是不可能的。使用上面的查询,您有一个OR而不是AND,它将起作用。

答案 1 :(得分:0)

为什么要使您的查询复杂化!改用这个糖语法:

{
  "query": {
    "ids" : {
      "values" : ["0", "1"]
    }
  }
}