Elasticsearch:在缺少字段时过滤文档,除非存在其他字段

时间:2016-07-18 10:10:11

标签: elasticsearch

我正在执行Elasticsearch查询,该查询过滤掉所有文档,其中缺少特定字段

query: {
  filtered: {
    filter: {
      bool: {
        should: {
          bool: {
            must: {
              term: 'someCondition'
            },
            must_not: {
              missing: {field: 'somefield'}
            }
          }
        }
      }
    }
  }
}

这可以按预期工作。现在我需要使这个missing过滤器有条件,这样只有当另一个字段不存在时它才会匹配。

我尝试将must_not转换为should,如下所示:

should: {
  missing: {field: 'somefield'},
  exists: {'field': 'somotherfield'}
}

但这似乎不起作用。

澄清:“SELECT * from docs WHERE(somefield IS not NULL或someotherfield IS NOT NULL)”

1 个答案:

答案 0 :(得分:0)

尝试这样的查询:

"filters" : [ {
"missing" : {
        "field" : "somefield"
  }
}, {
  "not" : {
    "filter" : {
      "missing" : {
        "field" : "somotherfield"
      }
    }
  }
} ]