English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Elasticsearch-Aggregation

Das Aggregationsrahmen sammelt alle Daten, die durch die Suchanfrage ausgewählt wurden, und besteht aus vielen Bausteinen, die helfen, komplexe Datenübersichten zu erstellen. Die grundlegende Struktur der Aggregation ist wie folgt:-

"aggregations": {
   "": {
      "": {
      }
 
      [["meta": { [] } ]?
      [["aggregations": { []+ }
   }
   ["": { ... } ]?*
}

Aggregationsarten gibt es verschiedene, jede mit ihrem eigenen Zweck. In diesem Kapitel werden diese Fragen im Detail besprochen.

Indikatoraggregation

Diese Aggregationsmethoden helfen, Matrizen auf Basis der Feldwerte der aggregierten Dokumente zu berechnen und können manchmal auch aus Skripten generierte Werte enthalten.

Die numerische Matrix kann ein Einzelfeld (wie die Durchschnittsaggregation) oder ein Mehrfeld (wie Statistiken) sein.

Durchschnittsaggregation

Diese Aggregation wird verwendet, um den Durchschnittswert eines numerischen Feldes in den aggregierten Dokumenten zu erhalten. Zum Beispiel,

POST /schools/_search
{
   "aggs":{
      "avg_fees":{"avg":{"field":"fees"}}
   }
}

Bei der Ausführung des obigen Codes erhielten wir folgende Ergebnisse-

{
   "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",
               "schöner 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": [
               "vollständig computerisiert"
            ],
            "rating": ""4.5"
         }
      }
   ]
 }
   "aggregations": {
      "avg_fees": {
         "value": : 2850.0
      }
   }
}

Kardinalitätsaggregation

Diese Aggregation bietet die Zählung der verschiedenen Werte eines bestimmten Feldes.

POST /schools/_search?size=0
{
   "aggs":{
      "distinct_name_count":{"cardinality":{"field":"fees"}}
   }
}

Bei der Ausführung des obigen Codes erhielten wir folgende Ergebnisse-

{
   "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
      }
   }
}

Hinweis Der Wert der Basis ist2weil die Gebühren zwei verschiedene Werte haben.

Erweiterte Datenaggregation

Diese Aggregation generiert alle statistischen Informationen über ein bestimmtes numerisches Feld in den Aggregationsdokumenten.

POST /schools/_search?size=0
{
   "aggs": {
      "fees_stats": { "extended_stats": { "field": "fees" } }
   }
}

Bei der Ausführung des obigen Codes erhielten wir folgende Ergebnisse-

{
   "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
         }
      }
   }
}

Maximalwert-Aggregation

Diese Aggregation sucht im Aggregationsdokument nach dem größten Wert eines bestimmten numerischen Felds.

POST /schools/_search?size=0
{
   "aggs": {
   "max_fees": { "max": { "field": "fees" } }
   }
}

Bei der Ausführung des obigen Codes erhielten wir folgende Ergebnisse-

{
   "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
      }
   }
}

Kleinstwert-Aggregation

Diese Aggregation sucht im Aggregationsdokument nach dem kleinsten Wert eines bestimmten numerischen Felds.

POST /schools/_search?size=0
{
   "aggs": {
      "min_fees": { "min": { "field": "fees" } }
   }
}

Bei der Ausführung des obigen Codes erhielten wir folgende Ergebnisse-

{
   "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
      }
   }
}

Aggregationsgesamtsumme

Diese Aggregation berechnet die Summe eines bestimmten numerischen Felds in den Aggregationsdokumenten.

POST /schools/_search?size=0
{
   "aggs": {
      "total_fees": { "sum": { "field": "fees" } }
   }
}

Bei der Ausführung des obigen Codes erhielten wir folgende Ergebnisse-

{
   "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 Ausnahmefällen gibt es auch einige andere Metrik-Aggregationsmethoden, wie z.B. Geobound-Aggregation und Geozentrum-Aggregation, um geografische Positionen zu realisieren.

Statistische Aggregation

Eine mehrfache Metrik-Aggregation, die statistische Informationen berechnet, basierend auf numerischen Werten, die aus den Aggregationsdokumenten extrahiert werden.

POST /schools/_search?size=0
{
   "aggs": {
      "grades_stats": { "stats": { "field": "fees" } }
   }
}

Bei der Ausführung des obigen Codes erhielten wir folgende Ergebnisse-

{
   "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
      }
   }
}

Aggregationsmetadaten

Sie können bei der Anfrage den Meta-Tag verwenden, um einige Daten zur Aggregation hinzuzufügen, und diese im Antworttext abrufen.

POST /schools/_search?size=0
{
   "aggs": {
      "min_fees": { "avg": { "field": "fees" } }
         "meta": {
            "dsc": "Lowest Fees This Year"
         }
      }
   }
}

Bei der Ausführung des obigen Codes erhielten wir folgende Ergebnisse-

{
   "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": "Niedrigste Gebühren dieses Jahres"
         }
         "value": : 2850.0
      }
   }
}