Am 14. September 2017 haben wir eine überarbeitete Fassung unserer Datenschutzrichtlinie veröffentlicht. Wenn Sie video2brain.com weiterhin nutzen, erklären Sie sich mit diesem überarbeiteten Dokument einverstanden. Bitte lesen Sie es deshalb sorgfältig durch.

Elasticsearch Grundkurs

Dokumentbeziehungen durchsuchen

LinkedIn Learning kostenlos und unverbindlich testen!

Jetzt testen Alle Abonnements anzeigen
Beziehungen zwischen verschiedenen Dokumenten, etwa Filme und zugehörige Bewertungen/Kommentare, können innerhalb des Index durchsucht und gespeichert werden. Welche Vorgaben dabei erfüllt sein müssen, erklärt Ihnen dieser Film.

Transkript

Elasticsearch ist keine relationale Datenbank. Das bedeutet Beziehungen zwischen verschiedenen Indices lassen sich nicht wie in einer SQL typischen Datenbank abbilden. Nichtsdestotrotz kennt Elasticsearch Beziehungen zwischen Objekten über sogenannte "parent-child" -Beziehungen. Was das am Ende für Sie bedeutet und wie Sie das nutzen können erfahren Sie im laufe dieses Videos. Zunächst einmal beginne ich mit dem Import meiner Bibliothek. Außerdem definiere ich nun 2 Filme mit einer Jahreszahl und einem Titel. Und eine Liste von Kommentaren, die ich diesen Filmen zuordnen möchte. Bei der Erstellung des Index, in dem ich diese Dokumente speichern möchte, definiere ich nun im Vorhinein ein Mapping. Dieses Mapping sagt, dass der Typ "comment" ein Kind ist des Types Movie. Er definiert also seinen "parent"-Typ. Damit müssen also Kommentare nun immer einem "Movie" zugeordnet werden. Ich erstelle nun den Index mit dieser Angabe und speichere meine 2 Filme auf dem Typen "Movie" in meinem Index. Ich habe nun also die beiden Filme "Whiplash" und "Seven Samurai". Dieser hat den Index 1 und dieser den Index 2. Als nächstes füge ich nun die ersten beiden Kommentare meiner Kommentarliste dem Film 1 hinzu. Dabei definiere ich beim Speichern des Dokumentes zunächst einmal den Typ "comment" statt dem Typ "Movie". Außerdem definiere ich explizit über die URL und dem Parameter "parent" die ID des "Movie" Dokuments, das meinen Kommentaren übergeordnet ist. Damit werden also nun die ersten beiden Kommentare dem Ersten Film zugeordnet und die restlichen 2 dem Zweiten Film. Schaue ich mir nun den ersten Film an, so ist auf dem Objekt selbst keine Spur der beiden Kommentare zu sehen. Versuche ich nun den ersten Kommentar in ähnlicher Art und Weise abzurufen, bekomme ich einen Fehler. Denn Kommentare sind nicht über diese Struktur einzeln abzufragen. Allerdings kann ich nun innerhalb der Filme suchen und so beide Filme identifizieren, als auch innerhalb der Kommentare. Und so alle 4 Kommentare abfragen. Was nun aber, wenn ich nach dem Film suche, der einen Kommentar hat, der von beispielsweise dem Nutzer "Christopher" ursprünglich stammt. Hierfür verwende ich eine besondere "query" Syntax. Unterhalb von query definiere ich also die Beziehung "has_child" vom Typ "comment". Ich suche konkret allerdings auf dem Typ "Movie". Innerhalb des geschachtelten Query gebe ich nun die Suchinstruktion für den Username "Christopher" an. Dabei finde ich nun also den Film "Whiplash", den Christopher kommentiert hat. Allerdings sehe ich hier nichts, was mich auf dessen ursprünglichen Kommentar hinweist. Um diese Information zu erhalten, füge ich zusätzlich die Angabe "inner_hits" hinzu. So erhalte ich also neben dem Dokument "Whiplash" auf "inner_hits" auch den Kommentar, der in der Beziehung zwischen beiden Objekten gefunden wurde. Ich kann allerdings auch umgekehrt suchen. Also nicht nach Filmen mit einem bestimmten Kommentar, sonden nach Kommentaren mit einem bestimmten Film. Dafür verwende ich innerhalb der Query-Syntax die Instruktion "has_Parent". In dem Fall nun also vom Typ "Movie". Und ich suche hier nach dem Titel "Samurai". Auch hier kann ich durch die Angabe von "inner_hits" sicherstellen, dass ich nicht nur den entsprechenden Kommentar finde, sondern auch den Film. Ich habe nun also beide Kommentare gefunden für diesen Film und jeweils für jeden dieser Kommentare bei "inner_hits" den entsprechenden Film selbst. Selbstverständlich kann ich auf solche Beziehungen auch Aggregationen verwenden. So kann ich beispielsweise auf dem Typ "Movie" nach allen Filmen pro Jahr suchen und der Menge an Kommentaren, die diesem Jahr zugeordnet sind. So finde ich also beispielsweise das Jahr 1954 und dort kommentarmäßig 2 Kommentare, die in diesem Jahr aufgetreten sind. Sie haben nun also gesehen, wie sich Beziehungen zwischen Objekten abbilden lassen. Eine wichtige Restrektion die hierbei noch gilt ist, dass diese Abbildung nur innerhalb des gleichen Index möglich war. Also hier beide Typen, sowohl Kommentare, als auch Filme sich auf dem Index "Movies" befanden. Dabei handelt es sich konkret um eine "parent-child" -Beziehung. Das bedeutet, dass ein Parent Multiple Childs haben kann. In dem Fall also mehrere Kommentare, die einem Film zugeordnet sind. Diese Art von Hierarchie lässt sich beliebig tief gestalten und ist nur abhängig davon, wie komplex Sie Ihre Abfragen gestalten möchten. Die Abfrage als solches wird je nach dem, was der Ausgangstyp ist mit "has_child" oder "has_parent" abgebildet. Um bei einer solchen Suchanfrage auch das ursprüngliche Dokument zu finden, für das die Suchanfrage galt können Sie "inner_hits" verwenden.

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!