Агрегирование sum_bucket
Агрегирование поэтапной обработки, которое вычисляет сумму по всем корзинкам указанного метрического показателя в агрегировании-предка. Указанный метрический показатель должен быть числовым, а агрегирование-предок должно быть агрегированием с множеством корзин.
Синтаксис
Агрегирование sum_bucket выглядит так изолированно:
{
"sum_bucket": {
"buckets_path": "the_sum"
}
} Таблица 81. sum_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"
}
}
}
},
"sum_monthly_sales": {
"sum_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'
}
}
}
},
sum_monthly_sales: {
sum_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",
},
},
},
},
sum_monthly_sales: {
sum_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"
}
}
}
},
"sum_monthly_sales": {
"sum_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
}
}
]
},
"sum_monthly_sales": {
"value": 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-sum-bucket-aggregation.html