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

Elasticsearch Grundkurs

Aggregationstypen kennenlernen

Testen Sie unsere 2016 Kurse

10 Tage kostenlos!

Jetzt testen Alle Abonnements anzeigen
Sehen Sie, wie sich anhand von Aggregationen die unterschiedlichsten Statistiken (Perzentile, Durchschnitt, Summe, Anzahl usw.) abbilden lassen. Auf Basis von Gruppierungen lassen sich Aggregationen auch mehrfach schachteln.

Transkript

Elasticsearch bringt standardmäßig einige sehr nützliche Aggregationstypen mit sich. In diesem Video betrachten wir daher typische Anwendungsfälle, für von Elasticsearch mitgelieferten Aggregations-Funktionen. Dafür beginnen wir zunächst einmal eine größere Menge Daten in unseren Elasticsearch-Index hinzuzufügen. Dafür verwende ich die 250 besten Filme auf IMDb. Ich stelle sicher, dass alle 250 Filme gespeichert wurden und betrachte nun meinen ersten Aggregationstypen. In diesem Fall nutze ich nun die Möglichkeit von Aggregations um die Anzahl von Jahreszahlen zu bestimmen, die einzigartig in meinen Datensätzen sind. Das bedeutet, wenn das Jahr 1991 dreimal vorkommt, wird es nur einmal gezählt. Dafür benutze ich die Aggregations-Form "cardinality". Zusätzlich gebe ich noch an, dass ich nicht an den einzelnen Datensätzen interessiert bin, mit der Information "size: 0". Damit werden also die einzelnen Datensätze als Hits ausgeblendet. Beim Ausführen dieser Abfrage erhalte ich also den Wert 81. Das bedeutet, innerhalb der 250 besten Filme aller Zeiten nach IMDb-Bewertungen, gibt es 81 verschiedene Jahreszahlen, in denen Sie veröffentlicht worden sind. Für bestimmte Felde wie beispielsweise IMDb-Bewertung, kann man sich auch Standardstatistiken ausgeben lassen als auch Perzentile. Bei den Statistiken bekomme ich also Werte wie den average-Wert, also den Durchschnittswert über alle Bewertungen, die Menge an Elementen, den besten Wert innerhalb der Datensätze und den kleinsten Wert, als auch die Summe aller Bewertungen. Je nach Attribut, das ich hier prüfe, sind die Werte entsprechend nützlich oder auch nicht. Für das IMDb-Rating ist der Durchschnittswert interessant, als auch der Maximal-und Minimalwert. Bei den Perzentilen kann ich meine eigenen Grenzen bestimmen. In meinem Fall also 25, 50 und 75 Prozent. Von der Bedeutung her ist das nun also so zu lesen, 25% meiner Datensätze, haben auf jeden Fall eine schlechtere Bewertung als 8,1. 50% meiner Datensätze haben auf jeden Fall eine schlechtere Bewertung als 8,3 und das Gleiche nun für 75%. Üblicherweise verknüpft man auch Sucheinschränkungen, wie die Suche nach dem Genre Crime, mit Aggregationen, wie in diesem Beispiel auf Jahren basierend und Subaggregationen, wie der Durchschnittsbewertung oder auch den gesamten Statistiken für ein bestimmtes Feld. Übrigens kann ich auch statt immer "aggregations" zu schreiben, die Ankürzung "aggs", "a-g-g-s" verwenden. Für meinen Bucket für das Jahr 1995, bekomme ich nun also alle Statistiken für das Feld Rating. Zu lesen wäre das nun also so, alle Filme vom Typ Crime, im Jahre 1995, haben eine Durchschnittsbewertung von 8,34. Was aber, wenn ich folgende Fragestellung habe? Ich möchte nun alle Filme, innerhalb eines bestimmten Jahres sehen und für genau diese Filme interessiert mich, welches Genre in diesem Jahr am wichtigsten war. Dafür verwende ich also wieder Aggregations, indem ich hier die besten Jahre bestimme, also nach Jahren gruppiere und als Aggregation darunter, die besten Genres definiere, mit der Instruktion "significant_terms", auf dem Feld "Genre". Führe ich diese Abfrage nun aus, bekomme ich die Fehlermeldung, dass "fielddata" nicht für das Feld "Genre" aktiviert wurde. Dieses ist also nötig um auf Basis von Worten innerhalb von Genre, eine solche Aggregation durchführen zu können. Um das Ganze nun also möglich zu machen, muss ich meinen Index neu definieren, beziehungsweise ein anderes Mapping anlegen. Ich definiere nun für einen neuen Index mit der Bezeichnung "new_movies", eine Mapping-Angabe, in der ich hier nun also für den Typ "Movie", für das Feld "Genre" "fielddata" aktiviere. Als nächstes kopiere ich nun, über die Reindizierungs-Instruktion, alle Datensätze aus dem Index "movies", in meinen Index "new_movies". Dies geht über den Endpunkt "_reindex". Alle meine 250 Dokumente wurden nun also in den Index "new_movies" kopiert. Wenn ich nun also die gleiche Abfrage noch einmal ausführe und hier nun also für "significant_terms" ein einzelnes Genre sehen möchte, gebe ich zusätzlich die Instruktion "size: 1" an. Führe ich diese Suche nun aus, erhalte ich ein Ergebnis, in dem ich für einen Bucket wie beispielsweise 1957, unter "top_genres", genau 1 Genre sehe und zwar in diesem Fall das Genre Drama. Das bedeutet, von allen 7 Filmen, die 1957 im "top_Rankings" sind, sind genau 7 Filme auch vom Genre Drama. Was im Umkehrschluss bedeutet, dass Filme vom Genre Drama, im 1957 besonders wichtig waren. Im Jahre 1995, bei dem nun auch 7 Dokumente vorhanden sind, ist der wichtigste Genre-Typ Crime. In diesem Fall allerdings nur für vier der sieben Filme. Innerhalb der Typischen Anwendungsfälle für Aggregationen, haben wir also mit dem Zählen von Unique-Werten begonnen. Dies funktioniert relativ einfach mit "cardinality". Statistiken auf bestimmten Feldern mit Werten, wie beispielsweise dem IMDb-Rating, haben wir sehen könne, indem wir die Instruktion "stets" verwendet haben. Auch Perzentile konnten relativ einfach für ein bestimmtes Feld angewendet werden. Mit der Signifikanz von bestimmten Wörtern in Textfeldern, konnten wir relevante Begrifflichkeiten, wie beispielsweise auch dem Genre-Feld für Jahreszahlen bestimmen. Dafür war es allerdings nötig, eine sogenannte Reindizierung durchzuführen, da wir nachträglich das Mapping eines Index angelegt haben.

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!