Elasticsearch查询:如何在多个字段上应用多个条件

时间:2019-01-18 03:43:44

标签: python-3.x elasticsearch

我是ES的新手。 我的数据 included_publishers excluded_publishers 中有两个字段。这两个列表是互斥的。

我正在尝试建立一个查询,以检查included_publishers中是否存在值,或者excluded_publishers中不存在值,或者(included_publishers和excluded_publisher字段都不存在)

我正在尝试通过在应有的部分中结合must_not条件来实现这一目标:

{
  "query": {
    "bool": {
      "should": [{
          "match": {
            "rights.included_publishers": "ABCD"
          }
        },
        {
          "bool": {
            "must_not": [{
                "exists": {
                  "field": "rights.included_publishers"
                }
              }, {
                "exists": {
                  "field": "rights.excluded_publishers"
                }
              },
              {
                "match": {
                  "rights.excluded_publishers": "ABCD"
                }
              }
            ]
          }
        }
      ],
      "minimum_should_match": 1
    }

  }
}

所有记录应在以下位置返回: ABCD存在于included_publishers列表中,或者include_publishers字段本身不存在。 ABCD在exclude_publishers列表中不存在,或者exclude_publishers字段本身不存在。

一旦我在第一个条件条件中用“ match”替换了“ term”,这个查询就会起作用(稍后进行编辑)。我得到正确的结果集。我不确定是否涵盖所有情况。

0 个答案:

没有答案