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

时间:2014-10-28 11:45:06

标签: ruby-on-rails ruby elasticsearch tire retire

我想将ids查询与must_not子句合并。我正在使用(重新)轮胎宝石和轨道应用。

我正在做这样的事情:

query do
  ids ["foo", "bar", "test"]
end

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

1 个答案:

答案 0 :(得分:6)

您需要使用的ES查询是:

GET /some_index/some_type/_search
{
  "query": {
    "bool": {
      "must": [
        {
          "ids": {
            "values": ["foo", "bar", "test"]
          }
        }
      ],
      "must_not": [
        {
          "match": {
            "name": "whatever"
          }
        }
      ]
    }
  }
}

因此,您需要布尔范围,must与您的idsmust_not与您的必须不匹配的查询。