Zum Inhalt springen

Wie funktioniert Elasticsearch?

Elasticsearch ist eine verteilte Suchmaschine auf der Basis von Apache Lucene. Es ist eine beliebte Search Engine für Volltextsuchen oder Log-Analysen und wird deshalb von vielen großen Unternehmen wie Netflix, Slack oder Uber genutzt.

Wie funktioniert Elasticsearch?

Diese Search Engine basiert darauf, dass die Rohdaten und Dokumente, welche durchsucht werden sollen, in einem Index zusammengefasst werden. Dazu werden sie im Indexierungsschritt normalisiert und geparst, damit die schlussendliche Suche schneller ablaufen kann. Dieser vorverarbeitete Index kann deutlich schneller durchsucht werden als die ursprünglichen Dokumenten und Daten.

Nehmen wir an wir haben einen Online Shop mit verschiedenen Möbeln, welche wir mithilfe einer Suche unseren Kunden zugänglich machen wollen. Für jedes Möbelstück gibt es Informationen, die in der Suche berücksichtigt werden sollen. Dazu gehören unter anderem die Produkteigenschaften (z.B. die Maße, Farbe oder Besonderheiten) und die Produktbeschreibung. Damit diese textuellen Eigenschaften schnell durchsucht werden können, nutzen wir die Volltextsuche Elasticsearch.

Dazu müssen wir die Daten und Dokumente in dessen Index hinterlegen. Diesen kann man sich wie eine Datenbank vorstellen, in der alle Informationen hinterlegt sind. Im Index befinden sich mehrere Typen, die vergleichbar sind mit Tabellen in einer Datenbank.

In unserem Beispiel könnten in einem Typ beispielsweise nur die Produkteigenschaften abgelegt sein, während in einem zweiten Typen die Produktbeschreibungen hinterlegt sind. In den Typen gibt es dann schließlich noch die Dokumente in denen einzelne Datensätze gehalten werden. Obwohl es sich beim Index nicht um eine strenge, relationale Datenbank handelt, muss trotzdem eine gewisse Struktur eingehalten werden, damit eine schnelle Suche möglich ist.

In den Dokumenten werden in unserem Beispiel die einzelnen Möbelstücke aufbereitet und in einer Struktur abgelegt, sodass sie für die schlussendliche Suche leichter aufzufinden sind. Dafür werden innerhalb der Dokumente die sogenannten Attribute (englisch: Properties) definiert, welche den Spalten in einer Tabelle am nächsten kommen.

Wofür nutzt man Elasticsearch?

Elasticsearch kann überall eingesetzt werden, wo eine Suchfunktionalität benötigt wird. Zusätzlich zeichnet es sich durch die hohe Skalierbarkeit und dem schnellen Suchprozess aus. Eine Reihe von Anwendungen für die es in Frage kommt sind:

  • Suchen auf Websites
  • Search Engines in Anwendungen (z.B. Apps)
  • Suchmaschine für Unternehmensdaten
  • Durchsuchung von Log-Dateien
  • Suche in Geodaten
  • Suche in Sicherheits- und Monitoringdateien

Welche Bestandteile gehören zu Elasticsearch?

Aufgrund der starken Verbreitung und den vielen Vorteilen, hat sich rund um Elasticsearch ein ganzer Stack von Tools gebildet, die über eine reine Suche hinausgehen.

Mithilfe von Logstash lassen sich Daten sammeln und aufbereiten, sodass sie für die anschließende Indexierung besser geeignet sind. Das Open-Source Programm kann als das ETL-Tool von Elastic verstanden werden und bietet vergleichbare Funktionalitäten, indem es Daten aus verschiedenen Quellen zusammenzieht, transformiert und den schlussendlichen Speicherort bringt.

Das Tool, welches nachgelagert ist zur Suche von Elastic, ist Kibana. Es bietet die Möglichkeit die Informationen aus dem Suchindex zu visualisieren und zu analysieren. Dieser ELK-Stack bietet dadurch die Möglichkeit die komplette Bandbreite von Beschaffung der Daten, über eine Suche bis hin zur Analyse des Indexes abzudecken.

Welche Vorteile bietet Elasticsearch?

Elasticsearch ist heutzutage eine sehr beliebte Suchmaschine aufgrund von vielen Vorteilen. Einige davon sind:

  • Schnelligkeit: Aufgrund der Indexierung ist es vor allem bei der Volltextsuche deutlich schneller als vergleichbare Algorithmen. Zusätzlich dauert auch die vorbereitende Indexierung nicht sehr lange, wodurch der Gesamtprozess von Aufnahme in den Index bis zur Auffindbarkeit in der Suche sehr schnell geht. Das ist sehr vorteilhaft für Anwendungen, bei denen die Geschwindigkeit der Suche ein wichtiges Kriterium ist.
  • Verteilte Architektur: Der Index wird auf verschiedene physische Rechner, die sogenannten Shards verteilt. Dabei werden auch Kopien der einzelnen Dokumente erstellt, um den Ausfall einer einzelnen Maschine kompensieren zu können. Durch diese Clusterstruktur kann die Leistung der Suche skaliert werden.
  • Weitere Funktionalitäten: Elasticsearch bietet darüber hinaus auch viele weitere Funktionen, die dazu beitragen, dass die Suchperformance sehr hoch ist. Dazu gehören beispielsweise Daten-Rollups oder das Index-Lifecycle-Management.
  • Business Analytics: Die bereits beschriebenen Bestandteile bieten unter anderem die Möglichkeit den Index oder die verarbeiteten Daten visualisieren und verarbeiten zu können. Das bietet einen gesamtheitlichen Ansatz.

Was sind die Nachteile von Elasticsearch?

Trotz der immensen Vorteile des Suchalgorithmus von Elastic, gibt es auch einige Punkte, die vor einer Implementierung bedacht und abgewogen werden sollten:

  • Suche ist nicht mit allen Shopsystemen und Infrastrukturen kompatibel.
  • Bei selbst-gehosteten Servern kann die Implementierung von Elasticsearch sehr aufwändig und kompliziert werden.
  • Die Verteilung des Index auf ein ganzes Cluster bietet zwar Vorteile was die Skalierung angeht, kann jedoch auch schnell zu einem Nachteil werden. Eben dann, wenn zu viele sogenannte Primary Shards genutzt wurden und somit der Index auf viele Maschinen aufgeteilt wird. Dadurch müssen auch alle diese Rechner aktiv werden, wenn ein neues Dokument indexiert wird, was zu einer hohen Auslastung des Systems nur für die Indexierung führt.

Das solltest Du mitnehmen

  • Elasticsearch ist eine beliebte Volltextsuche für verschiedene Anwendungen.
  • Das Grundprinzip besteht darin, die Daten zu indexieren und dadurch für den Suchalgorithmus einfacher und schneller auffindbar zu machen.
  • Dieser Suchalgorithmus zeichnet sich unter anderem durch die Schnelligkeit des Prozesses aus und dadurch dass der Index auf ein Computer Cluster aufgeteilt werden kann und dadurch skalierbar ist.

Andere Beiträge zum Thema Elasticsearch

Die Informationen aus diesem Artikel stammen zu großen Teilen von folgenden Quellen:

close
Das Logo zeigt einen weißen Hintergrund den Namen "Data Basecamp" mit blauer Schrift. Im rechten unteren Eck wird eine Bergsilhouette in Blau gezeigt.

Verpass keine neuen Beiträge!

Wir versenden keinen Spam! Lies die Details gerne in unserer Datenschutzrichtlinie nach.

Cookie Consent mit Real Cookie Banner