English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Аггрегационная рамка собирает все данные, выбранные поисковым запросом, и состоит из множества строительных блоков, что помогает создавать сложные摘要 данных. Основная структура аггрегации показана ниже-
"aggregations" : { "" : { "" : { } ["meta" : { [] } ]? ["aggregations" : { []+ } ]? } ["" : { ... }]* }
Аггрегации имеют различные типы, каждый из которых имеет свою цель. В этой главе мы подробно рассмотрим эти вопросы.
Эти аггрегации помогают рассчитывать матрицу по значению полей аггрегационных документов, а иногда и генерировать некоторые значения из скрипта.
Матрица значений может быть как одномерной (например, средняя аггрегация), так и многомерной (например, статистические данные).
Эта аггрегация предназначена для получения среднего значения любого числового поля в аггрегационных документах. Например,
POST /schools/_search { "aggs":{ "avg_fees":{"avg":{"field":"fees"}} } }
При выполнении вышеуказанного кода мы получили следующие результаты-
{ "took": 41 "timed_out": false, "_shards": { "total": 1, "successful" : 1, "skipped" : 0, "failed" : 0 } "hits" : { "total" : { "value" : 2, "relation" : "eq" } "max_score": 1.0, "hits": [ { "_index": "schools", "_type": "school", "_id": "5", "_score": 1.0, "_source": { "name": "Central School", "description": "CBSE Affiliation", "street": "Nagan", "city": "paprola", "state": "HP", "zip": "176115", "location": [ 31.8955385, 76.8380405 ], "fees": 2200, "tags": [ "Senior Secondary", "beautiful campus" ], "rating": "3.3" } } { "_index": "schools", "_type": "school", "_id": "4", "_score": 1.0, "_source": { "name": "City Best School", "description": "ICSE", "street": "West End", "city": "Meerut", "state": "UP", "zip": "250002", "location": [ 28.9926174, 77.692485 ], "fees": 3500, "tags": [ "fully computerized" ], "rating": "4.5" } } ] } "aggregations" : { "avg_fees": { "value" : 2850.0 } } }
Этот агрегат предоставляет счетчик различных значений в определенном поле.
POST /schools/_search?size=0 { "aggs":{ "distinct_name_count":{"cardinality":{"field":"fees"}} } }
При выполнении вышеуказанного кода мы получили следующие результаты-
{ "took": 2, "timed_out": false, "_shards": { "total": 1, "successful" : 1, "skipped" : 0, "failed" : 0 } "hits" : { "total" : { "value" : 2, "relation" : "eq" } "max_score" : null, "hits" : [ ] } "aggregations" : { "distinct_name_count": { "value": 2 } } }
Примечание Значение основы равно 2, так как у платы есть два разных значения.
Этот агрегат будет генерировать все статистические данные о специфических числовых полях в документе агрегации.
POST /schools/_search?size=0 { "aggs": { "fees_stats": { "extended_stats": { "field": "fees" } } } } }
При выполнении вышеуказанного кода мы получили следующие результаты-
{ "took": 8, "timed_out": false, "_shards": { "total": 1, "successful" : 1, "skipped" : 0, "failed" : 0 } "hits" : { "total" : { "value" : 2, "relation" : "eq" } "max_score" : null, "hits" : [ ] } "aggregations" : { "fees_stats": { "count": 2, "min": 2200.0, "max": 3500.0, "avg": 2850.0, "sum": 5700.0, "sum_of_squares": 1.709E7, "variance": 422500.0 "std_deviation": 650.0, "std_deviation_bounds": { "upper": 4150.0, "lower": 1550.0 } } } }
Эта агрегация находит максимальное значение определенного числового поля в документах агрегации.
POST /schools/_search?size=0 { "aggs": { "max_fees": { "max": { "field": "fees" } } } }
При выполнении вышеуказанного кода мы получили следующие результаты-
{ "took": 16, "timed_out": false, "_shards": { "total": 1, "successful" : 1, "skipped" : 0, "failed" : 0 } "hits" : { "total" : { "value" : 2, "relation" : "eq" } "max_score" : null, "hits" : [ ] } "aggregations" : { "max_fees": { "value": 3500.0 } } }
Эта агрегация находит минимальное значение определенного числового поля в документах агрегации.
POST /schools/_search?size=0 { "aggs": { "min_fees": { "min": { "field": "fees" } } } }
При выполнении вышеуказанного кода мы получили следующие результаты-
{ "took": 2, "timed_out": false, "_shards": { "total": 1, "successful" : 1, "skipped" : 0, "failed" : 0 } "hits" : { "total" : { "value" : 2, "relation" : "eq" } "max_score" : null, "hits" : [ ] } "aggregations" : { "min_fees" : { "value": 2200.0 } } }
Эта агрегация вычисляет сумму значений определенного числового поля в документах агрегации.
POST /schools/_search?size=0 { "aggs": { "total_fees": { "sum": { "field": "fees" } } } } }
При выполнении вышеуказанного кода мы получили следующие результаты-
{ "took": 8, "timed_out": false, "_shards": { "total": 1, "successful" : 1, "skipped" : 0, "failed" : 0 } "hits" : { "total" : { "value" : 2, "relation" : "eq" } "max_score" : null, "hits" : [ ] } "aggregations" : { "total_fees": { "value": 5700.0 } } }
В некоторых特殊情况还有其他一些度量标准聚合,例如地理边界聚合和地理质心聚合,以实现地理位置。
Агрегация многоуровневых мер, которая позволяет вычислять статистическую информацию на основе числовых значений, извлеченных из документов агрегации.
POST /schools/_search?size=0 { "aggs": { "grades_stats": { "stats": { "field": "fees" } } } } }
При выполнении вышеуказанного кода мы получили следующие результаты-
{ "took": 2, "timed_out": false, "_shards": { "total": 1, "successful" : 1, "skipped" : 0, "failed" : 0 } "hits" : { "total" : { "value" : 2, "relation" : "eq" } "max_score" : null, "hits" : [ ] } "aggregations" : { "grades_stats": { "count": 2, "min": 2200.0, "max": 3500.0, "avg": 2850.0, "sum": 5700.0 } } }
Вы можете добавить метаданные, связанные с агрегацией, в запросе, и получить их в ответе.
POST /schools/_search?size=0 { "aggs": { "min_fees": { "avg": { "field": "fees" } }, "meta": { "dsc": "Низкие платы за этот год" } } } }
При выполнении вышеуказанного кода мы получили следующие результаты-
{ "took": 0, "timed_out": false, "_shards": { "total": 1, "successful" : 1, "skipped" : 0, "failed" : 0 } "hits" : { "total" : { "value" : 2, "relation" : "eq" } "max_score" : null, "hits" : [ ] } "aggregations" : { "min_fees" : { "meta" : { "dsc" : "Низшие траты в этом году" } "value" : 2850.0 } } }