我正在执行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)”
答案 0 :(得分:0)
尝试这样的查询:
"filters" : [ {
"missing" : {
"field" : "somefield"
}
}, {
"not" : {
"filter" : {
"missing" : {
"field" : "somotherfield"
}
}
}
} ]