我想要实现的目标:我希望我的"年龄"聚合不被查询过滤器过滤,我希望能够对其应用过滤器.
所以,如果我从这个查询开始:
{
"query":{
"filtered":{
"filter":{ "terms":{ "family_name":"Brown" } } //filter_1
}
},
"aggs":{
"young_age":{
"filter":{
"range":{ "lt":40, "gt":18 } //filter_2
},
"aggs":{
"age":{
"terms":{
"field":"age"
}
}
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
我的聚合"young_age"将由filter_1和filter_2过滤.我不希望我的聚合被filter_1过滤.
当我查看文档时,我认为全局聚合将解决我的问题,并且我编写了该查询:
{
"query":{
"filtered":{
"filter":{ "terms":{ "family_name":"Brown" } } //filter_1
}
},
"aggs":{
"young_age":{
"global":{}, //<----------- add global
"filter":{
"range":{ "lt":40, "gt":18 } //filter_2
},
"aggs":{
"age":{
"terms":{
"field":"age"
}
}
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
但是弹性搜索会抱怨我的filter_2:
msgstr"""在[global]和[filter]中找到了两个聚合类型定义[age]"""
当然,如果我删除filter_2:
{
"query":{
"filtered":{
"filter":{
"terms":{
"family_name":"Brown"
}
}
} …Run Code Online (Sandbox Code Playgroud)