25 Aggregationen und Analytics APIs

25.1 Beschreibung

Die Aggregationen und Analytics APIs ermöglichen die Durchführung von Datenanalysen direkt innerhalb von Suchanfragen. Aggregationen fassen Daten zusammen, liefern Statistiken oder helfen, Muster zu erkennen.


25.2 Beispiele

Einfache Terms-Aggregation

POST /my-index/_search
{
  "size": 0,
  "aggs": {
    "top_terms": {
      "terms": {
        "field": "category.keyword"
      }
    }
  }
}

Metrische Aggregation (Durchschnitt)

POST /my-index/_search
{
  "size": 0,
  "aggs": {
    "average_price": {
      "avg": {
        "field": "price"
      }
    }
  }
}

Verschachtelte Aggregationen

POST /my-index/_search
{
  "size": 0,
  "aggs": {
    "categories": {
      "terms": {
        "field": "category.keyword"
      },
      "aggs": {
        "average_price": {
          "avg": {
            "field": "price"
          }
        }
      }
    }
  }
}

Zeitbasierte Aggregation

POST /my-index/_search
{
  "size": 0,
  "aggs": {
    "sales_over_time": {
      "date_histogram": {
        "field": "sale_date",
        "calendar_interval": "month"
      }
    }
  }
}

25.3 Wichtigste Parameter

Parameter Beschreibung
field Feld, auf das die Aggregation angewendet wird.
size Gibt an, wie viele Ergebnisse in der Aggregation zurückgegeben werden.
calendar_interval Zeitintervall für zeitbasierte Aggregationen (z. B. day, month).
aggs Verschachtelte Aggregationen.

25.4 Übungsaufgaben

  1. Einfache Terms-Aggregation:
    Analysieren Sie die Anzahl der Dokumente pro Kategorie im Index products.

    POST /products/_search
    {
      "size": 0,
      "aggs": {
        "categories": {
          "terms": {
            "field": "category.keyword"
          }
        }
      }
    }
  2. Durchschnittswert berechnen:
    Berechnen Sie den Durchschnittspreis im Index products.

    POST /products/_search
    {
      "size": 0,
      "aggs": {
        "average_price": {
          "avg": {
            "field": "price"
          }
        }
      }
    }
  3. Zeitbasierte Aggregation:
    Gruppieren Sie Verkäufe im Index sales nach Monaten.

    POST /sales/_search
    {
      "size": 0,
      "aggs": {
        "sales_over_time": {
          "date_histogram": {
            "field": "sale_date",
            "calendar_interval": "month"
          }
        }
      }
    }
  4. Verschachtelte Aggregation:
    Ermitteln Sie für jede Kategorie den Durchschnittspreis im Index products.

    POST /products/_search
    {
      "size": 0,
      "aggs": {
        "categories": {
          "terms": {
            "field": "category.keyword"
          },
          "aggs": {
            "average_price": {
              "avg": {
                "field": "price"
              }
            }
          }
        }
      }
    }

25.5 Musterlösungen

Einfache Terms-Aggregation

POST /products/_search
{
  "size": 0,
  "aggs": {
    "categories": {
      "terms": {
        "field": "category.keyword"
      }
    }
  }
}

Durchschnittswert berechnen

POST /products/_search
{
  "size": 0,
  "aggs": {
    "average_price": {
      "avg": {
        "field": "price"
      }
    }
  }
}

Zeitbasierte Aggregation

POST /sales/_search
{
  "size": 0,
  "aggs": {
    "sales_over_time": {
      "date_histogram": {
        "field": "sale_date",
        "calendar_interval": "month"
      }
    }
  }
}

Verschachtelte Aggregation

POST /products/_search
{
  "size": 0,
  "aggs": {
    "categories": {
      "terms": {
        "field": "category.keyword"
      },
      "aggs": {
        "average_price": {
          "avg": {
            "field": "price"
          }
        }
      }
    }
  }
}