ElasticSearch查询不在给定数组中的项目

时间:2017-09-08 22:13:48

标签: ruby elasticsearch

我正在尝试编写查询的一部分来过滤掉类型为" group"并且在给定的id数组中有一个组ID不是。我开始用必须和must_not编写一个bool查询但是我被惹恼了如何写#34; id不在给定的数组中。

编辑:  我实际上使用"和"转换过时的查询并且"不是"与ES 5.5兼容。这是旧的查询。

:and => [
  {
    term: {
      type: 'group'
    }
  },
  {
    :not => {
      terms: {
        group_id: group_ids
      }
    }
  },
  {
    :not => {
      terms: {
        user_id: user_ids
      }
    }
  }
]

group_ids和user_ids是数组。

2 个答案:

答案 0 :(得分:0)

您可能尚未使用ID分析数组。您可以使用带有Bool子句的filter查询,然后在该过滤器中启动带有bool子句的新mustNot查询,并在该子句中添加{{1使用您的ID查询。

答案 1 :(得分:0)

bool: {
  must: {
    term: {
      kind: 'group'
    }
  },
  must_not: [
    {
      terms: {
        group_id: group_ids
      }
    },
    {
      terms: {
        user_id: user_ids
      }
    }
  ]
}