如何在弹性搜索6.x中实现NOT IN的位置

时间:2018-01-08 20:57:13

标签: elasticsearch

我怎样才能实现 where NOT IN 在弹性搜索6.x. 我的映射包含一个字段'user_id' 我只想在没有特定用户的情况下获取那些文档。

2 个答案:

答案 0 :(得分:1)

我认为答案在于BooleanQuery。此查询类型允许您创建用于搜索数据的布尔运算字符串。在这种情况下,您可能需要查看must_not子句。

更具体地说,您想要做的是创建一个must_not子句,其中userIds处于terms状态。 E.G:

{
   "query" : {
     "bool" : {
        "must_not" : {
            "terms" : {
               "user_id" : [<user_id_1>, <other_user_ids..>]
             }
         }
      }
   }
}

答案 1 :(得分:0)

将下面的值占位符替换为您不想要的任何值。

POST _search
{
  "query": {
    "bool": {
      "must_not": [
        {
          "term": {
            "user_id": {
              "value": "{ID_YOU_DONT_WANT}"
            }
          }
        }
      ]
    }
  }
}