Агрегация `stats_bucket`
Вложенная агрегация, которая вычисляет различные статистические показатели по всем корзинкам указанного метрического значения во вложенной агрегации. Указанное метрическое значение должно быть числовым, а вложенная агрегация должна быть агрегацией с несколькими корзинкам.
Синтаксис
Агрегация `stats_bucket` выглядит следующим образом:
{
"stats_bucket": {
"buckets_path": "the_sum"
}
} Таблица 80. Параметры агрегации `stats_bucket`
| Имя параметра | Описание | Требуется | Значение по умолчанию |
|---|---|---|---|
| Путь к корзинкам, для которых необходимо вычислить статистику (см. | Требуется | |
| Политика обработки пропусков в данных (см. Обработка пропусков в данных для получения дополнительной информации) | Необязательно |
|
| Шаблон DecimalFormat для форматирования выходного значения. Если указано, отформатированное значение возвращается в свойстве | Необязательно |
|
Следующий фрагмент вычисляет статистику по ежемесячным sales:
resp = client.search(
index="sales",
size=0,
aggs={
"sales_per_month": {
"date_histogram": {
"field": "date",
"calendar_interval": "month"
},
"aggs": {
"sales": {
"sum": {
"field": "price"
}
}
}
},
"stats_monthly_sales": {
"stats_bucket": {
"buckets_path": "sales_per_month>sales"
}
}
},
)
print(resp) response = client.search(
index: 'sales',
body: {
size: 0,
aggregations: {
sales_per_month: {
date_histogram: {
field: 'date',
calendar_interval: 'month'
},
aggregations: {
sales: {
sum: {
field: 'price'
}
}
}
},
stats_monthly_sales: {
stats_bucket: {
buckets_path: 'sales_per_month>sales'
}
}
}
}
)
puts response const response = await client.search({
index: "sales",
size: 0,
aggs: {
sales_per_month: {
date_histogram: {
field: "date",
calendar_interval: "month",
},
aggs: {
sales: {
sum: {
field: "price",
},
},
},
},
stats_monthly_sales: {
stats_bucket: {
buckets_path: "sales_per_month>sales",
},
},
},
});
console.log(response); POST /sales/_search
{
"size": 0,
"aggs": {
"sales_per_month": {
"date_histogram": {
"field": "date",
"calendar_interval": "month"
},
"aggs": {
"sales": {
"sum": {
"field": "price"
}
}
}
},
"stats_monthly_sales": {
"stats_bucket": {
"buckets_path": "sales_per_month>sales"
}
}
}
} |
|
И вот возможный ответ:
{
"took": 11,
"timed_out": false,
"_shards": ...,
"hits": ...,
"aggregations": {
"sales_per_month": {
"buckets": [
{
"key_as_string": "2015/01/01 00:00:00",
"key": 1420070400000,
"doc_count": 3,
"sales": {
"value": 550.0
}
},
{
"key_as_string": "2015/02/01 00:00:00",
"key": 1422748800000,
"doc_count": 2,
"sales": {
"value": 60.0
}
},
{
"key_as_string": "2015/03/01 00:00:00",
"key": 1425168000000,
"doc_count": 2,
"sales": {
"value": 375.0
}
}
]
},
"stats_monthly_sales": {
"count": 3,
"min": 60.0,
"max": 550.0,
"avg": 328.3333333333333,
"sum": 985.0
}
}
}
© 2023-2025 Elasticsearch
As of September 2024, Elasticsearch is available under a choice of three licenses: the Server Side Public License (SSPL), the Elastic License, or the AGPLv3 (OSI approved).
Elasticsearch and the Elasticsearch logo are trademarks of Elasticsearch B.V., registered in the U.S. and in other countries.
https://www.elastic.co/guide/en/elasticsearch/reference/8.17/search-aggregations-pipeline-stats-bucket-aggregation.html