Как я могу вычислить метрику c agg для buckets
термина agg в ES?
Вот пример для создания данных:
curl -X PUT "localhost:9200/agg_avg?pretty" -H 'Content-Type: application/json' -d'
{
"mappings" : {
"_doc" : {
"properties" : {
"state" : { "type" : "keyword" },
"city" : { "type" : "keyword" }
}
}
}
}
'
for i in $(seq 1 10); do
curl -X PUT "localhost:9200/agg_avg/_doc/10${i}?pretty" -H 'Content-Type: application/json' -d'
{
"state": "CA",
"city": "LA"
}
'
done
for i in $(seq 1 5); do
curl -X PUT "localhost:9200/agg_avg/_doc/20${i}?pretty" -H 'Content-Type: application/json' -d'
{
"state": "CA",
"city": "SF"
}
'
done
for i in $(seq 1 8); do
curl -X PUT "localhost:9200/agg_avg/_doc/30${i}?pretty" -H 'Content-Type: application/json' -d'
{
"state": "UT",
"city": "SLC"
}
'
done
for i in $(seq 1 9); do
curl -X PUT "localhost:9200/agg_avg/_doc/40${i}?pretty" -H 'Content-Type: application/json' -d'
{
"state": "UT",
"city": "Provo"
}
'
done
И затем запрос сделать условия agg:
curl -X GET "localhost:9200/agg_avg/_search?pretty" -H 'Content-Type: application/json' -d'
{
"size": 0,
"aggs": {
"windows": {
"terms": {
"field": "state",
"size": 10
},
"aggs": {
"window_count": {
"terms": {
"field": "city",
"size": 10
}
}
}
}
}
}
'
С этим ответом:
{
"took" : 8,
"timed_out" : false,
"_shards" : {
"total" : 5,
"successful" : 5,
"skipped" : 0,
"failed" : 0
},
"hits" : {
"total" : 30,
"max_score" : 0.0,
"hits" : [ ]
},
"aggregations" : {
"windows" : {
"doc_count_error_upper_bound" : 0,
"sum_other_doc_count" : 0,
"buckets" : [
{
"key" : "CA",
"doc_count" : 15,
"window_count" : {
"doc_count_error_upper_bound" : 0,
"sum_other_doc_count" : 0,
"buckets" : [
{
"key" : "LA",
"doc_count" : 10
},
{
"key" : "SF",
"doc_count" : 5
}
]
}
},
{
"key" : "UT",
"doc_count" : 15,
"window_count" : {
"doc_count_error_upper_bound" : 0,
"sum_other_doc_count" : 0,
"buckets" : [
{
"key" : "SLC",
"doc_count" : 8
},
{
"key" : "Provo",
"doc_count" : 9
}
]
}
}
]
}
}
}
И я хочу вычислить среднее значение для "key": "CA"
из 7.5
и "key": "UT"
из 8.5