Elasticsearch

Erhalten Sie einen ersten Einblick in die Funktionsweise von Elasticsearch und die möglichen Anwendungen für Ihr Unternehmen.
Home » Themen » Elasticsearch

Nutzen Sie unsere Gratis-Sprechstunde

Offizielle ElasticSearch Webseite

Was ist Elasticsearch?

Suchmaschine für große Datenmengen

Elasticsearch ist eine Suchmaschine, die sich vor allem für die Durchsuchung großer Datenmengen („Big Data“) eignet. Dies wird durch die intelligente Strukturierung der Daten erreicht. Sie ermöglicht es, die Suche auf mehreren Servern zu verwalten und ausführen zu lassen. Die Option, auch die Daten auf mehrere Server zu verteilen, stellt einen weiteren Vorteil dar. So eignet sich Elasticsearch besonders für eine schnelle, hochverfügbare und ausfallsichere Suche, die in einer ebenso hochverfügbaren Datenbank stattfinden kann. Dank dieser enorm hohen Skalierbarkeit und Flexibilität kann Elasticsearch zum Beispiel als einfache Suche auf einer Webseite oder in einer Anwendung genutzt werden, aber auch um Unternehmensdaten großer Konzerne schnell und zuverlässig mit einer Volltextsuche zu durchsuchen. Diese Eigenschaften machen Elasticsearch zu einem der am weitesten verbreiteten Suchserver.

Anwendungsmöglichkeiten von Elasticsearch

 

Als Suche…

 

Digitale Aufgabenverwaltung

in Anwendungen
(App Search)

Digitale Aufgabenverwaltung

auf Websites
(Site Search)

Digitale Aufgabenverwaltung

in Unternehmensdaten
(Enterprise Search)

Zur Analyse von…

 

Digitale Aufgabenverwaltung

Geschäftsdaten
(Business Analytics)

Digitale Aufgabenverwaltung

Logs
(Log Analytics / Logging)

Digitale Aufgabenverwaltung

Sicherheitsdaten
(Security Analytics)

Zum Monitoring von…

Digitale Aufgabenverwaltung

Infrastrukturmetriken

Digitale Aufgabenverwaltung

Anwendungsleistung
(Application Performance Monitoring)

Digitale Aufgabenverwaltung

Container
(Container Monitoring)

Wie funktioniert Elasticsearch?

Elasticsearch im Überblick

Elasticsearch basiert auf Apache Lucene, einer in Java geschriebenen Programmbibliothek zur Volltextsuche. Es kann Daten sowohl aus Logs und Systemmetriken, als auch aus Webanwendungen empfangen. Diese werden im JSON Format als sogenannte Dokumente gespeichert, welche die kleinste Einheit darstellen, mit der Elasticsearch arbeitet.
Um eine schnelle Durchsuchung der Dokumente zu erreichen, werden diese in einem nächsten Schritt indiziert und normalisiert, also vereinheitlicht. Elasticsearch speichert die Resultate der Normalisierung in einem Index ab. Die ursprünglichen Originaldokumente liegen an einem anderen Ort. Der Elasticsearch-Index ist daher invertiert. Konkret bedeutet dies, dass er Angaben enthält, in welchen Dokumenten, welcher Suchbegriff vorkommt. Auf diese Weise muss in Elasticsearch nicht jedes Dokument bei einer Suche aufgerufen und durchkämmt werden. Lediglich der Index wird durchsucht, der dann auf das Dokument verweist, dass den Suchbegriff enthält. Die Suchzeit wird so erheblich verkürzt.

Shards und ihre Vor- und Nachteile

Elasticsearch zerteilt jeden Index in mehrere Stücke, die „Shards“ genannt werden. Diese bieten gleich mehrere Vorteile: Zum einen können sie bei Bedarf leicht auf einem Serververbund, genannt „Cluster“, verteilt werden, um die Hochverfügbarkeit der Suche zu erreichen, ohne dass dabei die Suchgeschwindigkeit leidet. Gleichzeitig kann das sogenannte „sharding“ ein effektiver Weg sein, um Rechenlasten zu verteilen und so die Performance zu erhöhen. Dies ist dank der Unterscheidung von zwei Shard-Typen möglich.
Elasticsearch kennt den sogenannten Primary Shard und dessen Replica Shards, die man sich als Kopien des Primary Shards vorstellen kann. Wird ein Dokument indiziert, geschieht dies zunächst auf dem Primary Shard. Die Replica Shards „ahmen“ ihr Vorbild nach und verfügen so stets über dieselben Informationen wie der Primary Shard. Das ist enorm wichtig und stellt den Grund dar, weshalb Suchen in Elasticsearch derart schnell Ergebnisse liefern können. Denn sowohl Primary als auch Replica Shards können Suchanfragen bearbeiten. Das bedeutet, dass nicht notwendigerweise auf den Primary Shard zugegriffen werden muss, wenn ein Replica Shard die Anfrage schneller bearbeiten könnte. Dadurch ist eine parallele Bearbeitung der Suchanfrage selbst über mehrere Instanzen möglich.

Zugleich ist man nicht notwendigerweise auf einen Primary Shard je Index begrenzt. Bei der Erstellung des Indexes kann festgelegt werden, wie viele Primary Shards für diesen vorhanden sein sollen. Der Vorteil mehrerer Primary Shards besteht selbstredend in der Möglichkeit, den Index und somit auch die Indexierung der Dokumente auf mehrere Server auszulagern. Dies kann jedoch auch ein potenzieller Stolperstein sein, denn zu viele Shards, könnten ein System genauso leicht überlasten, wie sie es entlasten können. Nehmen wir an, man wollte bei der Erstellung des Indexes auf Nummer Sicher gehen und setzt deshalb lieber viele Primary Shards für diesen fest. Das Resultat wäre, dass all diese Primary Shards bei der Indexierung eines Dokuments aktiv werden würden und mit ihnen ihre Replica Shards. Ein Großteil der Kapazitäten der Systeme würde also allein dazu genutzt, um ein einzelnes Dokument für die Suche zu indizieren. Da es nicht ohne Weiteres möglich ist, die festgelegte Anzahl der für den Index vorhandenen Primary Shards nachträglich zu ändern, bedarf es eines durchdachten Shard-Managements und genaue Kenntnisse der zugrunde liegenden Infrastruktur, damit ein wie oben erwähntes Szenario nicht eintritt.

Von Elasticsearch zum Elastic Stack

Die enorme Skalierbarkeit und Geschwindigkeit von Elasticsearch sorgten dafür, dass es sehr schnell auch zum Durchsuchen von Logdaten oder Systemmetriken verwendet wurde.
Um diese Daten zusätzlich visuell aufarbeiten zu können, werden zwei weitere Open Source Lösungen zusammen mit Elasticsearch betrieben: Logstash und Kibana.
Mit Logstash werden die Daten gesammelt und für Elasticsearch aufbereitet. Kibana kann diese Daten wiederum aus Elasticsearch lesen und analysiert sie zur visuellen Aufbereitung in Form von Grafen oder Diagrammen. Elasticsearch, Logstash und Kibana bilden zusammen den sogenannten ELK Stack. Zum Elastic Stack wurde der ELK Stack schließlich mit der Implementierung von Beats – einer Plattform für Daten-Shipper, damit Daten aus unterschiedlichen Quellen vollautomatisch an Logstash übergeben werden können.

Sie haben technische Fragen?

Nutzen Sie unsere Gratis-Sprechstunde zu Elasticsearch und lassen Sie sich direkt mit einem unserer qualifizierten Technikern verbinden.

Unsere Kunden – gemeinsam erfolgreich