Suchen

Definition Was ist Elasticsearch?

| Autor / Redakteur: Dipl.-Ing. (FH) Stefan Luber / Nico Litzel

Elasticsearch ist eine Open-Source-Suchmaschine auf Basis von Apache Lucene. Sie arbeitet mit Indices, die aus JSON-Dokumenten im NoSQL-Format bestehen. Die Suchmaschine arbeitet sehr schnell, ist für die Suche in großen Datenmengen einsetzbar (Big Data) und unterstützt für eine hohe Verfügbarkeit verteilte Architekturen. Zusammen mit Kibana und Logstash bildet Elasticsearch den Elastic Stack.

Firmen zum Thema

(Bild: © aga7ta - stock.adobe.com)

Elasticsearch ist eine im Jahr 2010 erschienene, vom Unternehmen Elastic (ehemals Elasticsearch N.V) entwickelte Suchmaschine. Sie basiert auf Apache Lucene und ermöglicht die Volltextsuche in verschiedenen Arten von strukturierten und unstrukturierten Daten wie Textdaten, numerischen Daten oder Geodaten. Elasticsearch arbeitet mit Indices, bestehend aus JSON-Dokumenten im NoSQL-Format, und stellt eine REST-API zur Indexierung und zum Durchsuchen der Daten zur Verfügung. Aufgrund der hohen Suchgeschwindigkeit ist Elasticsearch für das Durchsuchen großer Datenmengen beispielsweise im Umfeld von Big-Data- und Business-Intelligence-Anwendungen nutzbar.

Die Suchmaschine unterstützt verteilte Rechnerarchitekturen und bietet eine hohe Verfügbarkeit. Zusammen mit Kibana und Logstash bildet Elasticsearch den sogenannten Elastic Stack, auch ELK-Stack genannt. Es handelt sich um eine Sammlung von Open Source Software, die für das Analysieren und Visualisieren von Daten einsetzbar ist. Elasticsearch ist eine der am häufigsten verwendeten Suchsoftware und wird für Anwendungen wie die Suche auf Websites, in Unternehmensdaten oder in Log-Dateien verwendet.

Die Kern-Software von Elasticsearch unterliegt der Apache License 2.0. Darüber hinaus bietet das Unternehmen Elastic kommerzielle Produkte und kostenpflichtige Services rund um Elasticsearch an. Elasticsearch ist in Java programmiert und arbeitet plattformunabhängig. Die aktuelle Version (Stand Mitte 2020) ist Elasticsearch 7.7.1.

Funktionsweise von Elasticsearch

Im Mittelpunkt der Suche mit Elasticsearch steht die Datenstruktur des invertierten Index. Der Index wird vor der Suche durch Indexierung der Rohdaten erstellt und ist mit einer Art Datenbank vergleichbar. Es sind dort die Daten abgelegt, die durchsucht werden sollen. Der Index teilt sich in Typen und Dokumente auf. Typen verhalten sich für die Suchmaschine ähnlich wie Tabellen einer Datenbank. Ein Index kann viele Typen beinhalten. Unterhalb der Typen sind die JSON-Dokumente mit ihren Eigenschaften angesiedelt. Sie sind die kleinste Einheit des Index und beinhalten die eigentlichen Daten für die Suche. JSON-Dokumente bestehen aus Paaren von Schlüsseln und Werten. Elasticsearch nutzt sowohl für das Indexieren der Rohdaten als auch für die Ausführung der Suchanfragen eine REST-API.

Physische Arbeitsweise und Realisierung der Hochverfügbarkeit

Elasticsearch ist für die Arbeit mit verteilten Rechnerstrukturen konzipiert und unterstützt die Lastverteilung und die Hochverfügbarkeit. Die physische Speicherung der Daten findet redundant statt und ermöglicht die Parallelisierung von Aufgaben. Zur Speicherung der Daten spaltet Elasticsearch seine Indices in sogenannte Shards auf. Diese Shards lassen sich auf mehrere Rechner (Nodes) verteilen. Gleichzeitig werden aus Redundanzgründen Kopien der Shards auf den Rechnern abgelegt und intelligent zwischen den Nodes aufgeteilt. Der Ausfall eins Nodes hat aufgrund der redundanten Speicherung der Shards keinen Einfluss auf die Suche in einem Index. Mehrere Nodes sind zu einem Cluster zusammengefasst und werden von einem Master Node gesteuert.

Elasticsearch als Bestandteil des Elastic Stacks

Zusammen mit Kibana und Logstash bildet Elasticsearch den Elastic Stack (ELK-Stack). Es handelt sich um eine Sammlung von Open Source Tools, die für das Durchsuchen, Anreichern, Analysieren und Visualisieren großer Datenmengen einsetzbar ist. Innerhalb des ELK-Stacks übernimmt Logstash die Aufgabe, Daten aus den verschiedenen Quellsystemen zu extrahieren, zu transformieren und sie Elasticsearch zur Indexierung zur Verfügung zu stellen. Logstash arbeitet mit Plug-ins und unterstützt viele verschiedene Quellsysteme und Zielsysteme. Darüber hinaus können eigene Plug-ins für das Extrahieren und Speichern der Daten implementiert werden.

Kibana ist für die Auswertung und Visualisierung der Suchergebnisse von Elasticsearch zuständig. Die Analyseergebnisse lassen sich in Diagrammen, Landkarten und grafischen Dashboards leicht verständlich darstellen. Kibana bietet dem Anwender eine browserbasierte Oberfläche .

Typische Anwendungen von Elasticsearch

Elasticsearch ist als Suchmaschine für viele verschiedene Anwendungen einsetzbar. Typische Anwendungen sind:

  • Die Suche auf Webseiten,
  • die Suche in Anwendungsdaten,
  • die Suche in Geschäftsdaten,
  • die Suche in Log-Dateien,
  • die Suche in Geodaten sowie
  • die Suche in Sicherheits- und Monitoringdaten.

Vorteile von Elasticsearch

Elasticsearch bietet viele Vorteile. Die Suchmaschine arbeitet sehr schnell, ist gut skalierbar und für große Datenmengen geeignet. Verteilte Rechnerarchitekturen werden unterstützt und hohe Verfügbarkeiten sind realisierbar. Dank zahlreicher integrierter Funktionen ist Elasticsearch flexibel und effizient einsetzbar. Zusammen mit Logstash und Kibana bildet Elasticsearch eine komplette Software-Sammlung zur Analyse und Visualisierung von großen Datenbeständen. Die Software ist frei verfügbar und steht unter Open-Source-Lizenz. Bei Bedarf sind professioneller Support und kommerzielle Erweiterungen verfügbar. Weitere Vorteile von Elasticsearch sind:

  • einfach zu implementieren
  • einfach zu nutzende APIs
  • Unterstützung vieler Programmier- und Skriptsprachen
  • arbeitet plattformunabhängig
  • umfangreiche Dokumentation verfügbar

(ID:46648035)

Über den Autor