Unsere Datenschutzrichtlinie wird in Kürze aktualisiert. Bitte sehen Sie sich die Vorschau an.

Elasticsearch Grundkurs

Aggregationen für Statistiken und Gruppierungen nutzen

Testen Sie unsere 2013 Kurse

10 Tage kostenlos!

Jetzt testen Alle Abonnements anzeigen
Aggregationen stellen Ihnen die Möglichkeit zur Verfügung, Statistiken und Gruppierungen für unterschiedliche Felder innerhalb eines Dokuments abzurufen. Die dazu erforderlichen Schritte erklärt Ihnen Christopher Janietz in diesem Video.

Transkript

Besonders im Umfeld von Servern und Infrastruktur, spielen Aggregationen eine große Rolle. Schließlich möchte man bestimmte Datenfelder, wie beispielsweise die Menge an Anfragen in einem bestimmten Zeitraum, zusammenfassen. Aber nicht nur in diesem Umfeld, sondern auch im Umfeld von Datenanalysen, ganz allgemein gesprochen, ist diese Funktion mehr als nützlich. Und Elasticsearch als eine Datenbank, die auf diesen Anwendungsfall spezialisiert ist, besonders gut geeignet. Genau deswegen werden wir uns im Laufe dieses Videos, mit den Möglichkeiten von Aggregationen auseinandersetzen. Um sinnvolle Aggregationen machen zu können, benötige ich zunächst einmal einige Datensätze in meiner Elasticsearch. Dafür lade ich die 250 besten Filme von der IMDb Chart-Liste herunter. Diese speichere ich dann in Form ihrer jeweiligen Beschreibung, innerhalb meiner Datenbank. Nachdem ich nun also diese 250 Dokumente gespeichert habe, kann ich nun einige interessante Fragestellung beantworten. Da es sich hier nun um die 250 besten Filme nach IMDb-Bewertung handelt, wäre es doch sehr interessant herauszufinden, welches Jahr besonders gut abgeschnitten hat. Das heißt, welche Menge von Filmen, in welchem Jahr am meisten aufgetreten sind. Hierfür verwende ich statt der klassischen "query"-Suche, eine Suche mit Aggregations. Innerhalb von Aggregations, kann ich nun einen Feldnamen angeben, anhand dessen nun, Felder aus meinem Dokument aggregiert werden. Ich gebe also hier auf dieser Ebene, meiner Aggregation einen Namen. Und auf dieser Ebene spezifiziere ich die Basis, auf dessen nun gruppiert werden soll. Bei einer solchen einfachen Aggregation, handelt es sich also nur lediglich um simple Gruppierung. Als Suchergebnis erhalte ich nun unter dem Attribut "aggregations", mein von mir angegebenes Aggregationsattribut "years" und dort die entsprechenden "buckets". "Buckets" sind also hier die gruppierten Elemente. Neben meiner Aggregation selbst, liefert Elasticsearch auch noch die für diese Aggregation relevanten Dokumente aus. Üblicherweise kann man diese ignorieren, indem man beispielsweise das Attribut "size" angibt und dieses auf "0" setzt. Außer man ist an den tatsächlichen Objekten interessiert. Anhand unseres Ergebnisses, können wir nun feststellen, dass das Jahr 1957 ein besonderes gutes Jahr für Filme war. Denn von den 250 bestbewerteten Filmen aller Zeiten, sind allen 7 Filme aus diesem Jahr. Selbstverständlich kann ich eine solche Aggregation auch mit einer regulären Abfrage kombinieren. Wenn mich also das gleiche nun interessiert, für alle Filme vom Genre Crime, kann ich zusätzlich einen query spezifizieren, der zunächst einmal nach Filmen sucht mit dem Genre Crime, als auch wieder nach dem Jahr aggregiert. Aus diesem Ergebnis stellen wir nun fest, dass das Jahr 1957 kein gutes Jahr für gute Filme im Bereich Krimi war. Denn die meisten sehr gut bewerteten Krimi-Filme, stammen aus dem Jahr 1995. Aber nur einfache Aggregationen nach Gruppierungen, wie beispielsweise dem Jahr, sind oft uninteressant. Denn schließlich möchte man mehr über seine Aggregation wissen. Wie wäre es beispielsweise, wenn wir die nach den den Jahren gruppierten Filme zusätzlich anhand ihrer durchschnittlichen Bewertung identifizieren können. So definiere ich also nun zunächst einmal meine Aggregation auf dem Feld Jahr und zusätzlich unterhalb dieser Aggregation, definiere ich eine zusätzliche Aggregation, die ich als "averagerRating" bezeichne. Diese nimmt also nun den Durchschnittswert, basierend also auf "avg", dem "average", auf dem Feld "imdbRating". 1957 mag also nun sehr viele gute Filme hervorgebracht haben, allerdings ist die Bewertung dieser Filme im Durchschnitt schlechter als die Filme, die 2000 herausgekommen sind. Denn diese haben eine Bewertung im Durchschnitt von 8,38. In diesem Video haben Sie nun also die ersten Erfahrungen gesammelt mit Aggregation auf Elasticsearch. Dabei haben wir zunächst einmal eine sogenannte Feld-Aggregation oder auch Gruppierung verwendet. Damit lässt sich relativ einfach die Menge an Dokumenten, für ein bestimmtes Feld, anhand dessen einzigartiger Werte bestimmen, also eine ganz simple Gruppierung. Zusätzlich können wir die klassischen Möglichkeiten von Elasticsearch nutzen um unsere Suche im Vorhinein einzuschränken und damit unsere Aggregation nur noch basierend auf den, aus der Suche stammenden Werten auszuführen. Mithilfe einer geschachtelten Aggregation konnten wir zusätzlich interessante Werte, wie beispielsweise das durchschnittliche Rating der Filme, auf unsere Aggregation anwenden. Dabei gibt es verschiedenste Aggregations-Operationen, wie beispielsweise die hier gesehenen "average", als auch die Summe, den Maximalwert, den Minimalwert und unter Umständen auch eigene gescriptete Werte.

Elasticsearch Grundkurs

Lernen Sie, Elasticsearch und seine Einsatzgebiete zu verstehen und mit der API zu interagieren.

2 Std. 19 min (23 Videos)
Derzeit sind keine Feedbacks vorhanden...
 
Themen:
Programmierung
Exklusiv für Abo-Kunden
Erscheinungsdatum:23.02.2017

Dieser Online-Kurs ist als Download und als Streaming-Video verfügbar. Die gute Nachricht: Sie müssen sich nicht entscheiden - sobald Sie das Training erwerben, erhalten Sie Zugang zu beiden Optionen!

Der Download ermöglicht Ihnen die Offline-Nutzung des Trainings und bietet die Vorteile einer benutzerfreundlichen Abspielumgebung. Wenn Sie an verschiedenen Computern arbeiten, oder nicht den ganzen Kurs auf einmal herunterladen möchten, loggen Sie sich auf dieser Seite ein, um alle Videos des Trainings als Streaming-Video anzusehen.

Wir hoffen, dass Sie viel Freude und Erfolg mit diesem Video-Training haben werden. Falls Sie irgendwelche Fragen haben, zögern Sie nicht uns zu kontaktieren!