弹性搜索从术语聚合中获取 doc_count 的平均值

Ham*_*rza 4 elasticsearch elasticsearch-aggregation

我在弹性搜索中有如下​​术语查询。

GET http://localhost:9200/adapters/request/_search
{
    "query": {
        "bool" : {
            "must" : {
                "match" : { "adapterName" : "EnginePushableAdapter" }
            },
            "filter": {
                "range" : {
                    "request.requestTime" : {
                        "gte" : 1492080226172,
                        "lte" : 1492080725964
                    }
                }
            }
        }
    }, 
    "aggs" : {
        "call_count" : {
            "terms" : {
                "field" : "deviceId"          
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

有没有办法计算术语聚合返回的 doc_count 的平均值?像这样

    "avg_agg" : {
        "avg": { "field": "call_count.doc_count" }

    }
Run Code Online (Sandbox Code Playgroud)

换句话说,我想取之前聚合字段的平均值。

Erv*_*vin 5

我认为您可能正在寻找平均存储桶聚合。

https://www.elastic.co/guide/en/elasticsearch/reference/5.3/search-aggregations-pipeline-avg-bucket-aggregation.html

尝试类似的东西

...
"my_count_avg": {
  "avg_bucket": {
    "buckets_path": "call_count>_count"
  }
}
Run Code Online (Sandbox Code Playgroud)

  • 这样做的结果是计算出前 10 个存储桶的平均计数。我怎样才能平均所有的桶? (2认同)