Elasticsearch - wer suchet der findet?!

Timo Zaharanski

Senior Developer

Anfang März 2022 nahm ich am Elasticsearch Training in München teil. Der erste Teil des Developer-Trainings „Elasticsearch Engineer“ fand im Hilton Hotel in München statt. 2 aufschlussreiche Tage mit vielen Learnings…
Was ist Elasticsearch?

Elasticsearch (ES) ist eine Search Engine mittels derer Suchanfragen schnell und effizient abgearbeitet werden können. Hervorzuheben ist die Skalierbarkeit von ES und die Fähigkeit, viele verschiedene Inhalte zu indexieren und damit "suchbar" zu machen. Den Höhepunkt der Verbreitung von ES stellte der Mai 2017 dar. Seither ist die Verwendung wieder etwas rückläufig. Jedoch nutzen viele bekannte Firmen wie Netflix, Facebook & Github Elasticsearch, um ihre Suchanfragen zu optimieren. Somit bleibt Elasticsearch die mit Abstand meistverwendete Search Engine weltweit:

Wie funktioniert Elasticsearch?

Elasticsearch empfängt Rohdaten aus einer Vielzahl von Quellen. Diese Daten werden aufbereitet, normalisiert und ggf. erweitert. Schließlich werden sie in ES als Dokumente indexiert. Durch den Indexierungsprozess können Nutzer komplexe Anfragen stellen und zusammengefasste Daten aus verschiedenen Quellen mittels Aggregationen abrufen. 

Der Zeitraum zwischen dem Indexieren eines Dokumentes und der Verfügbarkeit in der Suche dauert dabei in der Regel nicht mehr als eine Sekunde. Die Schnittstellen von ES basieren auf den standardisieren Protokollen HTTP und REST und die Daten werden im JSON Format gespeichert und auch die Suchanfragen werden in diesem Format gestellt.

Alternative Clients sind, falls gewünscht, vorhanden (Java, JavaScript, Python oder .NET). Dadurch muss keine proprietäre Sprache oder Syntax erlernt werden, was den Einsatz von ES extrem vereinfacht.

Hauptmerkmale von ES

  • Dokumentenbasiert und schemafrei: Objekte und umfangreiche Dokumente lassen sich indexieren. Die Daten müssen nicht für ein bestimmtes Schema aufbereitet werden.

  • Horizontal skalierbar: Die Daten können auf verschiedene Server verteilt und damit die Last verringert und die Leistung verbessert werden.

  • Verfügbarkeit: von allen Daten können Sicherungskopien erstellt werden. Ein einzelner Serverausfall hat keinen Komplett-Ausfall zur Folge.

  • Konfigurierbarkeit und Erweiterbarkeit: Es gibt umfangreiche Konfigurationsmöglichkeiten und Erweiterungen, die die Funktionalität von ES noch verbessern können.

  • RESTful-API: ES lässt sich per HTTPs und JSON verwenden.

Meine Learnings

  1. Ausreichend Planung ist von Vorteil.
    Elasticsearch ist schnell aufgesetzt. Ein Suchindex kann relativ einfach aufgesetzt werden und eine erste funktionierende Version ist bereit. Dennoch sollte man sich schon zu Beginn überlegen, was denn genau gefunden werden soll. Es gibt vielfältige Setup- und Sucheinstellungen, doch diese müssen für den Einzelfall ganz nach Kundenwunsch optimiert werden.

  2. Irrelevante Daten müssen teilweise toleriert werden.
    Wenn man Suchanfragen verwendet, die auch Teil- oder ähnliche Ergebnisse liefern, bedeutet dies zugleich, dass die Genauigkeit der Ergebnisse darunter leidet. Wenn man Suchanfragen stellt, die nur exakte Ergebnisse liefern, werden weniger Teil- oder ähnliche Ergebnisse geliefert. Dieser Umstand ‚Precision and Recall‘ sollte bei der Suche berücksichtigt werden.

Fazit

Elasticsearch ist eine gut skalierbare open source Volltext-Suchmaschine. Sie ermöglicht ein effizientes Abspeichern und Suchen in großen Datenmengen und das in nahezu Echtzeit. Der Einstieg in ES gelingt relativ schnell – ein Download und ein einzelner Befehl, um alles zum Laufen zu bringen. ES lässt sich intuitiv an die eigenen Bedürfnisse bzgl. Groß-/Kleinschreibung, Filter, Paginierung, Sortierung & Highlighting anpassen. Zudem lassen sich unterschiedliche Dokumenttypen anlegen, deren Verhalten in der Suche wiederum individuell eingestellt werden kann.

Die Schulung war sehr gut organisiert und die Trainer hatten auf alle Fragen weitreichende und fundierte Antworten parat. Nach der Schulung wollte man sofort loslegen. Ich freue mich darauf, Elasticsearch in Projekten bei TOWA einzusetzen.

Quellen

  1. Google Trend Elasticsearch . Abgerufen am 24.03.20 unter https://trends.google.de/trends/explore?date=all&geo=DE&q=Elasticsearch

  2. Search Engine Ranking. Abgerufen am 24.03.20 unter https://db-engines.com/en/ranking/search+engine.

  3. Volltextsuche mit Elasticsearch im Geodaten-Umfeld. Abgerufen am 25.03.20 unter http://www.adbv-nuernberg.de/file/pdf/13202/Bachelorarbeit_Asli_Mosaab.pdf

  4. Precision and Recall. Abgerufen am 25.03.20 unter https://en.wikipedia.org/wiki/Precision_and_recall.

  5. Photo by Evgeni Tcherkasski on Unsplash