Elasticsearch Grundkurs

Eigene Text-Analyzer erstellen

LinkedIn Learning kostenlos und unverbindlich testen!

Jetzt testen Alle Abonnements anzeigen
Mit einem Elasticsearch-Analyzer bereiten Sie Textfelder für eine optimale Indizierung vor. Dazu können Sie einen Analyzer ganz nach Ihren Wünschen einrichten und zusätzlich für eine bestimmte Sprache konfigurieren.

Transkript

Beim Aufbauen von Indices verwendet Elasticsearch sogenannte Analyzer. Für den eigenen Zweck lassen sich diese Analyzer bis aufs kleinste Detail konfigurieren. Im Laufe dieses Videos setzen wir uns daher, mit der sogenannten Analyzer-API auseinander und konfigurieren einen solchen Analyzer selbst. Begonnen nun mit meinem Phyton-Notizbuch, nutze ich die Bibliotheken "Requests" und "JSON". Als nächstes definiere ich nun ein JSON-Dokument, indem ich einen Analyzer spezifiziere, hier den Standard-Analyzer, den Elasticsearch üblicherweise für jeden Textindex benutzt und einen beispielhaften Text, wie "Heute ist ein schöner Tag". Auf dem Endpunkt "_analyze", kann ich mir nun nach dem gleichen Verfahren, das Elasticsearch intern verwendet, mir anschauen, wie mein Text zerlegt werden würde. Man sieht also, dass Elasticsearch hier das Ganze in sogenannte "Tokens" zerlegt, mit verschiedenen Positionen. Der einfachste Tokenizer, ist der "Whitespace Tokenizer". Das bedeutet, nach jedem Whitespace, also Leerzeichen, werden die Worte als Token voneinander getrennt. So entsteht also das Token "Heute", "ist", "ein", "schöner", "Tag". Als nächstes verwandelt Elasticsearch alle diese Worte noch in Lowercase-Format. Damit ist es später einfacher bei Suchbegriffen, die dann auch automatisch in Lowercase umgewandelt werden, genau diese Worte wieder zu finden. So gibt es also eine einheitliche Groß- und Kleinschreibung. Viel mehr wird der Standard-Analyzer mit einem solchen deutschen Text nicht machen. Allerdings kommt Elasticsearch von Haus aus mit einigen, für Sprachen spezifischen Wörterbüchern, die in Form eines Analyzers bessere Arbeit, mit beispielsweise deutschen Sätzen leisten können. Ich spezifiziere also hier den Analyzer "German" und den gleichen Text. Das Ergebnis ist nun ein deutlich besseres. Denn die einzig relevanten Worte, die übrig geblieben sind, sind "heut´", "schon", und "Tag". Was ist hier also nun passiert? Neben dem üblichen Tokenizer, der also Worte nach Leerzeichen trennt, als auch der automatischen Kleinschreibung, wurden sogenannte Stoppwörter entfernt. Denn das Wort "ist", als auch "ein", sind Stoppwörter, die in der deutschen Sprache üblicherweise keine relevante Bedeutung für den Inhalt eines Satzes haben. Denn die Kernessenz ist der "schöne Tag", als auch das Datum "Heute". Neben dem Entfernen der Stoppwörter, werden alle Worte auf ihre Basisform zurückgeführt. Beispielsweise das Wort "Heute" auf "heut´", "schöner" als Steigerungsform, auf "schon", und "Tag" bleibt bei seiner Standardform. Der Vorteil ist, dass alle Suchanfragen, die ähnlich aussehen würden, oder vielleicht nach "schönerer Tag" suchen, auch auf diese Basisform zurückgeführt werden und entsprechend das Dokument finden könnten. Um von speziellen Analyzern nun Gebrauch machen zu können auf bestimmten Feldern, kann ich mithilfe der Mappings-Definition für einen Dokumententyp in meinem Index, für ein bestimmtes Feld, in diesem Fall "Plot", den Analyzer bestimmen. Ich verwende also nun den Analyzer "english" für dieses Textfeld. Ich speichere nun einige Filme in diesem Textfeld, nachdem der Index angelegt wurde. Als nächstes suche ich innerhalb des Plots, nach dem Ausdruck "wrecking havoc". Das Besondere ist, ich habe also nach "wrecking havoc" gesucht, innerhalb des Plots steht allerdings, "wreaks havoc". Dadurch dass beide Worte nun auf die Basisform "wreak" zurückgeführt werden, kann ich also trotzdem, das für mich relevante Dokument innerhalb des Index finden. Neben den Standard-Analyzern für diverse Sprachen, kann ich auch meinen eigenen Analyzer bauen und diesem einen Namen geben. Einen solchen Analyzer kann ich dann auch auf meinem Index als möglichen Analyzer spezifizieren. Ich verwende hier den Objektstrukturbaum ausgehend von "settings""analysis" "analyzer". Hier vergebe ich nun einen Namen für meinen Analyzer, in dem Fall also "my_analyzer". Ein solcher Analyzer benötigt einen Tokenizer. Dieser trennt also Worte, in meinem Fall basierend auf "whitespace" also Leerzeichen und sogenannte Filter. Das bedeutet, jedes Wort, das ein Token ist, durchläuft nun diese Filter. Beim "ascifolding", werden besondere Zeichen, wie beispielsweise "ö", "ä" und "ü", in Basisformen wie "u", "e" umgewandelt. Mit "lowercase", verwandel ich jeden Token in sein kleingeschriebenes Äquivalent. An dieser Stelle könnte ich noch äußerst komplexere Filter, als auch Tokenizer bauen, die ich anhand von Scripten, nach meinen eigenen Wünschen gestalten kann. Eine ausführliche Dokumentation über die Möglichkeiten von custom Analyzern, findet man innerhalb der Elasticsearch Dokumentation. Um noch zu testen, wie sich mein Analyzer tatsächlich verhält, kann ich auf Basis meines Index, mit dem Endpunkt "analyze", meinen Text durch meinen soeben erstellten Analyzer senden. Ich bekomme also kleingeschriebene Tokens, die anhand von Leerzeichen hin getrennt worden sind, als auch Formen von Worten, wie "schöner", bei denen, Buchstaben wie "ö", "ä" und "ü" ausgenommen sind. Sie haben nun also die Analyzer-API kennengelernt. Diese befindet sich entweder unmittelbar auf der Elasticsearch-Instanz, mithilfe derer Sie, globale Analyzer testen können, als auch auf jedem Index, bei dem Sie beispielsweise eigene Analyzer angelegt haben. Dabei haben Sie den Standard-Analyzer gesehen, der ohne spezielle Konfiguration, von Elasticsearch immer verwendet wird. Für bestimmte Sprachen bringt Elasticsearch selbst Analyzer, basierend auf Wörterbüchern mit sich. In meinem Beispiel haben Sie dies für Deutsch, als auch Englisch gesehen. Dabei werden vor allem Stoppwörter und Basisformen für die Tokens bestimmt. Einen solchen Analyzer haben wir dann speziell für einen Index konfiguriert, als auch, einen eigenen Analyzer angelegt für einen Index. Dabei brauchten wir eigene Filter, als auch Tokenizer.

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...
Hersteller:
Software:
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!