已存在的过滤器已被ES5.0中的存在查询替换。
那么我们怎样才能在同一个查询中实现等价?换句话说,我们不想进行两次查询,只是针对各种聚合,包括存在计数?
所以我想计算字段的时间" the_field"存在(或不为空)
"aggregation":{
"exists_count":{
"filter":{
"exists":{
"field":"the_field"
}
}
}
}
答案 0 :(得分:0)
我认为你可以使用统计数据聚合,
{ "aggs" :
{ "time_stats" :
{ "extended_stats" :
{ "field" : "time" }
}
}
}
答案 1 :(得分:0)
使用Elastic 5.0,过滤器并没有被查询取代,而是组合在一起。从语法上看它们看起来是一样的,但是你使用它的上下文决定了它是被解释为一个查询(因子得分)还是一个过滤器来简单地清除文档。以下代码应该完全符合您的要求:
{
"query": {
"match_all": {}
},
"aggs": {
"field_exists": {
"filter": {
"exists": {
"field": "name"
}
}
}
}
}
返回的聚合看起来像这样,doc_count表示“名称字段存在的文档数量。希望这有帮助!
{
"aggregations": {
"field_exists": {
"doc_count": 11984
}
}
}