English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Il framework di aggregazione raccoglie tutti i dati selezionati dalla query di ricerca e è composto da molti componenti, che aiutano a costruire una sintesi complessa dei dati. La struttura di base dell'aggregazione è come segue-
"aggregations" : { "" : { "" : { } ["meta" : { [] } ]? ["aggregations" : { []+ } ]? } ["" : { ... }]* }
Le aggregazioni hanno diversi tipi, ognuno con il proprio scopo. Questo capitolo discuterà in dettaglio questi argomenti.
Queste aggregazioni aiutano a calcolare la matrice in base ai valori dei campi dei documenti aggregati e, a volte, possono generare alcuni valori da script.
La matrice numerica può essere sia un valore singolo (ad esempio, l'aggregazione media) che un valore multiplo (ad esempio, le statistiche).
Questa aggregazione viene utilizzata per ottenere la media dei campi numerici presenti nei documenti aggregati. Ad esempio:
POST /schools/_search { "aggs": { "avg_fees":{"avg":{"field":"fees"}} } }
Quando eseguiamo il codice sopra, otteniamo i seguenti risultati-
{ "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 } } }
Questa aggregazione fornisce il conteggio dei valori diversi di un campo specifico.
POST /schools/_search?size=0 { "aggs": { "distinct_name_count":{"cardinality":{"field":"fees"}} } }
Quando eseguiamo il codice sopra, otteniamo i seguenti risultati-
{ "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 Il valore della base è 2, poiché le tariffe hanno due valori diversi.
Questa aggregazione genererà tutte le informazioni statistiche sui campi numerici specifici del documento aggregato.
POST /schools/_search?size=0 { "aggs": { "fees_stats": { "extended_stats": { "field": "fees" } } } } }
Quando eseguiamo il codice sopra, otteniamo i seguenti risultati-
{ "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 } } } }
Questa aggregazione trova il valore massimo del campo numerico specifico nei documenti aggregati.
POST /schools/_search?size=0 { "aggs": { "max_fees": { "max": { "field": "fees" } } } } }
Quando eseguiamo il codice sopra, otteniamo i seguenti risultati-
{ "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 } } }
Questa aggregazione trova il valore minimo del campo numerico specifico nei documenti aggregati.
POST /schools/_search?size=0 { "aggs": { "min_fees": { "min": { "field": "fees" } } } }
Quando eseguiamo il codice sopra, otteniamo i seguenti risultati-
{ "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 } } }
Questa aggregazione calcola la somma del campo numerico specifico nei documenti aggregati.
POST /schools/_search?size=0 { "aggs": { "total_fees": { "sum": { "field": "fees" } } } } }
Quando eseguiamo il codice sopra, otteniamo i seguenti risultati-
{ "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 } } }
In casi speciali ci sono anche altre aggregazioni di metriche, come l'aggregazione di confini geografici e l'aggregazione di centroidi geografici, per realizzare posizioni geografiche.
Una aggregazione multidimensionale che calcola informazioni statistiche in base ai valori estratti dai documenti aggregati.
POST /schools/_search?size=0 { "aggs": { "grades_stats": { "stats": { "field": "fees" } } } } }
Quando eseguiamo il codice sopra, otteniamo i seguenti risultati-
{ "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 } } }
Puoi aggiungere alcuni dati relativi all'aggregazione utilizzando il tag meta nella richiesta e ottenerli come risposta.
POST /schools/_search?size=0 { "aggs": { "min_fees": { "avg": { "field": "fees" } }, "meta": { "dsc": "Lowest Fees This Year" } } } }
Quando eseguiamo il codice sopra, otteniamo i seguenti risultati-
{ "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" : "Più Basse Commissioni dell'Anno" } "value" : 2850.0 } } }