用于搜索“field1为空 OR field2为空”的文档的弹性搜索查询是什么。
我正在使用elasticSearch 5.3 ......
答案 0 :(得分:4)
此查询对我有用:
curl -XGET "http://localhost:9200/my_null_val/_search?pretty" -d '
{
"query": {
"bool":{
"must_not":{
"bool": {
"must": [
{"exists" : { "field" : "field1" }},
{"exists" : { "field" : "field2" }}
]
}
}
}
}
}'
作为提示,您可以将field1 is null **OR** field2 is null
视为与NOT (field1 is not null **AND** field2 is not null)
等效的表达。
它也被称为De_Morgan's law。
答案 1 :(得分:1)
您还可以在should
过滤器中使用bool
条款。
"bool": {
"should": [{
"bool": {
"must_not": {
"exists": {
"field": "field1"
}
}
}
}, {
"bool": {
"must_not": {
"exists": {
"field": "field2"
}
}
}
}]
}