Elasticsearch - 将id查询与must_not子句结合使用

use*_*595 1 ruby ruby-on-rails elasticsearch tire retire

我想将ids查询与must_not子句结合起来.我正在使用(重新)轮胎宝石与导轨应用.

我正在做这样的事情:

query do
  ids ["foo", "bar", "test"]
end
Run Code Online (Sandbox Code Playgroud)

哪个有效.但是,当我尝试将它与must_not子句组合时,我收到错误 - must_notboolean适用于范围,不包括ids查询.有没有办法将这两个查询结合起来?

And*_*fan 7

您需要使用的ES查询是这样的:

GET /some_index/some_type/_search
{
  "query": {
    "bool": {
      "must": [
        {
          "ids": {
            "values": ["foo", "bar", "test"]
          }
        }
      ],
      "must_not": [
        {
          "match": {
            "name": "whatever"
          }
        }
      ]
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

所以,你需要布尔范围,a must和你的idsa must_not和你的必须不匹配的查询.