elasticsearch - How to get max or avg from Bucket Aggregation -
how can avg or max doc_count buckets.
there many examples of how numeric fields, need nax count of distinct devices.
my query:
post sessions/_search { "size": 0, "query": { ... }, "aggs": { "1": { "terms": { "size" : 10, "order" : { "_count" : "desc" }, "field": "deviceid" } } } }
example result:
"aggregations": { "1": { "doc_count_error_upper_bound": 62, "sum_other_doc_count": 326057, "buckets": [ { "key": "878f6sdb0245e3d8bd", "doc_count": 230 }, { "key": "ee43b17fsfc00fd04f", "doc_count": 224 }, { "key": "bdcdeb0eeaffcfe748", "doc_count": 141 }, ...
terms aggregation
default sorts bucket in decreasing order of doc_count
. if fetch first bucket, 1 maximum doc_count.
query:
post sessions/_search { "size": 0, "query": { ... }, "aggs": { "1": { "terms": { "size" : 1, "order" : { "_count" : "desc" }, "field": "deviceid" } } } }
i don't think finding average possible using 1 query.but can use below queries result
sum of doc counts = total documents
in index.
first find total documents using
get /order/order/_count
then find buckets count using cardinality
{ "aggs" : { "device_count" : { "cardinality" : { "field" : "deviceid" } } } }
then divide both results average.
- please note counts returned
cardinality
approximate. refer https://www.elastic.co/guide/en/elasticsearch/reference/2.x/search-aggregations-metrics-cardinality-aggregation.html more details. hope helps.
Comments
Post a Comment