English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
El marco de agregación recopila todos los datos seleccionados por la consulta de búsqueda y se compone de muchos bloques, lo que ayuda a construir resúmenes complejos de datos. La estructura básica de la agregación se muestra a continuación-
"aggregations": { "": { "": { } [["meta": { [] } ]? [["aggregations": { []+ } } ["": { ... } ]?* }
Las agregaciones tienen diferentes tipos, cada uno con su propio propósito. Este capítulo discutirá estos temas en detalle.
Estas agregaciones ayudan a calcular la matriz basada en los valores de campo de los documentos de agregación, y a veces también se pueden generar algunos valores desde el script.
La matriz numérica puede ser un valor único (como la agregación promedio) o un valor múltiple (como las estadísticas).
Esta agregación se utiliza para obtener el valor promedio de cualquier campo numérico existente en los documentos de agregación. Por ejemplo,
POST /schools/_search { "aggs":{ "avg_fees":{"avg":{"field":"fees"}} } }
Al ejecutar el código anterior, obtenemos los siguientes resultados-
{ "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 } } }
Esta agregación proporciona el recuento de valores diferentes de un campo específico.
POST /schools/_search?size=0 { "aggs":{ "distinct_name_count":{"cardinality":{"field":"fees"}} } }
Al ejecutar el código anterior, obtenemos los siguientes resultados-
{ "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 } } }
Nota El valor de la base es2debido a que los costos tienen dos valores diferentes.
Esta agregación generará toda la información estadística sobre el campo numérico específico en los documentos de agregación.
POST /schools/_search?size=0 { "aggs": { "fees_stats": { "extended_stats": { "field": "fees" } } } }
Al ejecutar el código anterior, obtenemos los siguientes resultados-
{ "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 } } } }
Esta agregación encuentra el valor máximo del campo numérico específico en los documentos de agregación.
POST /schools/_search?size=0 { "aggs": { "max_fees": { "max": { "field": "fees" } } } }
Al ejecutar el código anterior, obtenemos los siguientes resultados-
{ "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 } } }
Esta agregación encuentra el valor mínimo del campo numérico específico en los documentos de agregación.
POST /schools/_search?size=0 { "aggs": { "min_fees": { "min": { "field": "fees" } } } }
Al ejecutar el código anterior, obtenemos los siguientes resultados-
{ "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 } } }
Esta agregación calcula la suma del campo de valor específico en los documentos de agregación.
POST /schools/_search?size=0 { "aggs": { "total_fees": { "sum": { "field": "fees" } } } }
Al ejecutar el código anterior, obtenemos los siguientes resultados-
{ "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 } } }
En situaciones especiales, también hay otras algunas agregaciones de estándar, como la agregación de límites geográficos y la agregación de centroide geográfico, para lograr la ubicación geográfica.
Una agregación de estándar de múltiples valores, que puede calcular información estadística basada en los valores extraídos de los documentos de agregación.
POST /schools/_search?size=0 { "aggs": { "grades_stats": { "stats": { "field": "fees" } } } }
Al ejecutar el código anterior, obtenemos los siguientes resultados-
{ "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 } } }
Puedes agregar algunos datos sobre la agregación utilizando la marca meta en la solicitud y obtenerlos como respuesta.
POST /schools/_search?size=0 { "aggs": { "min_fees": { "avg": { "field": "fees" } } "meta": { "dsc": "Bajos Costos Este Año" } } } }
Al ejecutar el código anterior, obtenemos los siguientes resultados-
{ "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": "Aranceles más bajos de este año" , "value": 2850.0 } } }