Глобальное агрегирование
Определяет одну корзину со всеми документами в контексте выполнения поиска. Этот контекст определяется индексами и типами документов, по которым вы выполняете поиск, но не зависит от самого запроса поиска.
Глобальные агрегаторы могут быть только верхнеуровневыми агрегаторами, поскольку вложение глобального агрегатора в другой агрегатор по корзинам не имеет смысла.
Пример:
resp = client.search(
index="sales",
size="0",
query={
"match": {
"type": "t-shirt"
}
},
aggs={
"all_products": {
"global": {},
"aggs": {
"avg_price": {
"avg": {
"field": "price"
}
}
}
},
"t_shirts": {
"avg": {
"field": "price"
}
}
},
)
print(resp) response = client.search(
index: 'sales',
size: 0,
body: {
query: {
match: {
type: 't-shirt'
}
},
aggregations: {
all_products: {
global: {},
aggregations: {
avg_price: {
avg: {
field: 'price'
}
}
}
},
t_shirts: {
avg: {
field: 'price'
}
}
}
}
)
puts response const response = await client.search({
index: "sales",
size: 0,
query: {
match: {
type: "t-shirt",
},
},
aggs: {
all_products: {
global: {},
aggs: {
avg_price: {
avg: {
field: "price",
},
},
},
},
t_shirts: {
avg: {
field: "price",
},
},
},
});
console.log(response); POST /sales/_search?size=0
{
"query": {
"match": { "type": "t-shirt" }
},
"aggs": {
"all_products": {
"global": {},
"aggs": {
"avg_price": { "avg": { "field": "price" } }
}
},
"t_shirts": { "avg": { "field": "price" } }
}
} | Агрегация | |
| Вложенные агрегации, зарегистрированные для этой агрегации |
Приведенное выше агрегирование демонстрирует, как вычислить агрегирования (avg_price в данном примере) по всем документам в контексте поиска, независимо от запроса (в нашем примере это вычисление средней цены по всем продуктам в каталоге, а не только по "рубашкам").
Результат выполнения данной агрегации:
{
...
"aggregations": {
"all_products": {
"doc_count": 7,
"avg_price": {
"value": 140.71428571428572
}
},
"t_shirts": {
"value": 128.33333333333334
}
}
} | Количество документов, которые были агрегированы (в нашем случае, все документы в контексте поиска) | |
| Средняя цена всех продуктов в индексе | |
| Средняя цена всех футболок |
© 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-bucket-global-aggregation.html