使用过滤器布尔值或查询进行弹性搜索查询 ID



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

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

试试ids过滤器

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

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

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

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

最新更新