我们的数据结构如下
{
"foo": "bar",
"baz": [
{
"qux": true
},
{
"qux": null
},
{
"qux": false
}
]
}
在其他文档中,baz
数组中的项目数可能会有所不同。
我们正在寻找null
数组中qux
至少具有一个baz
值的文档。
我们尝试过:
{
"query": {
"bool": {
"must_not": {
"exists": {
"field": "baz.qux"
}
}
}
}
}
但是,这不会返回包含以下内容的文档: true
数组中null
的一个qux
和一个baz
的值。
任何帮助将不胜感激!
答案 0 :(得分:0)
您可以使用缺少的查询来简单地检查字段是否为空。
{
"query" : {
"constant_score" : {
"filter": {
"missing" : { "field" : "baz.qux" }
}
}
}
}
您也可以在以下链接上查看弹性文件:
答案 1 :(得分:0)
您可以使用nested mapping和nested query来实现。
映射:
{
"properties": {
"foo": {
"type": "text"
},
"baz": {
"type": "nested",
"properties": {
"qux": {
"type": "boolean"
}
}
}
}
}
查询:
{
"query": {
"nested": {
"path": "baz",
"query": {
"bool": {
"must_not": {
"exists": {
"field": "baz.qux"
}
}
}
}
}
}
}