Was ist Elasticsearch?

Elasticsearch ist eine verteilte Open-Source-Suchmaschine und ‑Analytics-Engine für Daten aller Art – von Textdaten über numerische Daten und Geodaten bis hin zu strukturierten und zu unstrukturierten Daten. Elasticsearch basiert auf Apache Lucene und wurde 2010 von Elasticsearch N.V. (jetzt unter dem Namen „Elastic“ firmierend) eingeführt. Mit seinen einfachen REST-APIs, seiner Verteiltheit, seiner Geschwindigkeit und seiner Skalierbarkeit ist Elasticsearch der zentrale Bestandteil des Elastic Stack – einer Sammlung von Open-Source-Tools für das Ingestieren, Anreichern, Speichern, Analysieren und Visualisieren von Daten. Der Elastic Stack, häufig auch als „ELK Stack“ (Elasticsearch, Logstash und Kibana) bezeichnet, enthält jetzt mit „Beats“ auch eine Reihe leichtgewichtiger Daten-Shipper für das Senden von Daten an Elasticsearch.

Wofür wird Elasticsearch verwendet?

Elasticsearch kann dank seiner Geschwindigkeit und Skalierbarkeit sowie der Fähigkeit, viele verschiedene Inhalte zu indexieren, für eine Reihe von Anwendungsfällen genutzt werden:

  • Suche in Anwendungen (App Search)
  • Suche auf Websites (Site Search)
  • Suche in Unternehmensdaten (Enterprise Search)
  • Logging und Log Analytics
  • Infrastrukturmetriken und Container-Monitoring
  • Monitoring der Anwendungsleistung (Application Performance Monitoring, APM)
  • Analyse und Visualisierung von Geodaten
  • Analyse von Sicherheitsdaten (Security Analytics)
  • Analyse von Geschäftsdaten (Business Analytics)

Wie funktioniert Elasticsearch?

Elasticsearch empfängt Rohdaten aus einer Vielzahl von Quellen, wie Logs, Systemmetriken und Webanwendungen. Dazu werden die Rohdaten im Rahmen des Ingestionsprozesses geparst, normalisiert und angereichert. Anschließend werden sie in Elasticsearch indexiert. Nach dem Indexieren in Elasticsearch können Nutzer komplexe Abfragen starten und mittels Aggregationen komplexe Zusammenfassungen ihrer Daten abrufen. Kibana bietet dann die Möglichkeit, die Daten auf vielfältige Weise zu visualisieren, die entsprechenden Dashboards mit anderen zu teilen und den Elastic Stack zu verwalten.

Was ist ein Elasticsearch-Index?

Ein Elasticsearch-Index ist eine Sammlung von Dokumenten, die irgendwie miteinander in Beziehung stehen. Elasticsearch speichert Daten als JSON-Dokumente. In jedem Dokument wird eine Gruppe von Schlüsseln (Feldnamen oder Eigenschaften) mit den zugehörigen Werten (Zeichenfolgen, Zahlen, Booleschen Ausdrücken, Datumsangaben, Werte-Arrays, geografischen Positionen oder anderen Datentypen) korreliert.

Elasticsearch nutzt eine Datenstruktur namens invertierter Index, die sehr schnelle Volltextsuchen ermöglicht. In einem invertierten Index wird jedes in den Dokumenten mindestens einmal vorkommende Wort zusammen mit der Angabe aufgeführt, in welchen Dokumenten die einzelnen Wörter vorkommen.

Während des Indexierungsprozesses speichert Elasticsearch Dokumente und erstellt einen invertierten Index, damit die Dokumentdaten in Fast-Echtzeit durchsucht werden können. Das Indexieren wird mit der Index-API gestartet, mit der Sie ein JSON-Dokument in einem konkreten Index hinzufügen oder aktualisieren können.

Wofür wird Logstash verwendet?

Logstash, eines der Kernprodukte des Elastic Stack, wird zum Aggregieren und Verarbeiten von Daten und zum Senden dieser Daten an Elasticsearch verwendet. Logstash ist eine serverseitige Open-Source-Datenverarbeitungspipeline, mit deren Hilfe Daten aus mehreren Quellen gleichzeitig ingestiert, angereichert und umgewandelt werden können, bevor sie in Elasticsearch indexiert werden.

Wofür wird Kibana verwendet?

Kibana ist ein Tool zum Visualisieren und Verwalten von Daten für Elasticsearch und bietet in Echtzeit aktualisierte Histogramme, Liniendiagramme, Tortendiagramme und Landkarten. Darüber hinaus enthält Kibana weiterführende Anwendungen, wie zum Beispiel Canvas zum Erstellen individuell angepasster dynamischer Infografiken auf der Basis der Daten des Nutzers und Elastic Maps zum Visualisieren von Geodaten.

Welche Vorteile hat es, Elasticsearch zu verwenden?

Elasticsearch ist schnell. Da Elasticsearch auf Lucene basiert, kann es seine Trümpfe besonders bei der Volltextsuche ausspielen. Elasticsearch ist darüber hinaus eine Fast-Echtzeit-Suchmaschine: Der Zeitraum zwischen dem Indexieren eines Dokuments und der Auffindbarkeit des Dokuments durch die Suche ist sehr kurz – in der Regel nur eine Sekunde. Das macht Elasticsearch besonders für Anwendungsfälle geeignet, in denen die Zeit eine Rolle spielt, wie Security Analytics und Infrastruktur-Monitoring.

Elasticsearch ist von Natur aus verteilt. Die in Elasticsearch gespeicherten Dokumente werden auf verschiedene Container, die sogenannten Shards, verteilt, die dupliziert werden, sodass im Fall eines Hardware-Ausfalls redundante Kopien parat sind. Die Verteiltheit von Elasticsearch macht es möglich, Elasticsearch auf Hunderte (oder sogar Tausende) von Servern zu skalieren und Daten Petabyte-weise zu verarbeiten.

Elasticsearch verfügt über eine Vielzahl von Funktionen. Neben seiner Geschwindigkeit, Skalierbarkeit und Resilienz kann Elasticsearch auch mit einer Reihe leistungsfähiger integrierter Funktionen aufwarten, die es noch effizienter machen, Daten zu speichern und nach ihnen zu suchen. Dazu gehören zum Beispiel Daten-Rollups und das Index-Lifecycle-Management.

Der Elastic Stack vereinfacht das Ingestieren und Visualisieren von Daten sowie das Erstellen von Berichten. Dank der Beats- und Logstash-Integrationen lassen sich Daten ganz einfach verarbeiten, bevor sie in Elasticsearch indexiert werden. Und Kibana bietet Echtzeit-Visualisierung von Elasticsearch-Daten sowie Funktionen für den schnellen Zugriff auf APM-Daten, Logdaten und Infrastrukturmetriken.

FAQs zu Elasticsearch

Ist Elasticsearch kostenlos?

Ja, die Open-Source-Funktionen von Elasticsearch können unter der Apache 2-Lizenz kostenlos genutzt werden. Unter der Elastic-Lizenz stehen weitere kostenlose Funktionen bereit, und mit kostenpflichtigen Abonnements erhalten Sie Zugriff auf den Support sowie auf zusätzliche Features, wie Alerting und Machine Learning.

Welche ist die offizielle Distribution von Elasticsearch?

Die offizielle Distribution von Elasticsearch ist auf der Elastic-Website verfügbar.

Wer kann zum Elasticsearch-Projekt beitragen?

Elasticsearch ist ein von Elastic verwaltetes Open-Source-Projekt. Zur Codebasis haben sowohl Elastic-eigene als auch externe Entwickler beigetragen.

Im Elasticsearch-GitHub-Repository kann jeder ein Pull-Request posten. Elastic führt eine transparente Review aller Pull-Requests durch, bevor sie in die Codebasis eingepflegt werden.

Welche Bereitstellungsoptionen gibt es für Elasticsearch?

Elasticsearch kann über Elasticsearch Service (verfügbar auf Amazon Web Services (AWS), Google Cloud Platform (GCP) und Alibaba Cloud) als gehosteter, verwalteter Dienst bereitgestellt werden. Es ist aber auch möglich, Elasticsearch herunterzuladen und auf Ihrer eigenen Hardware oder in der Cloud zu installieren. Anleitungen zum Herunterladen, Installieren und Konfigurieren von Elasticsearch finden Sie in der Elasticsearch-Dokumentation.

Nutzern, die ihre Deployments von einer gemeinsamen Konsole aus bereitstellen, verwalten und überwachen möchten, ohne dafür eine öffentliche Cloud zu verwenden, bietet Elastic sowohl Elastic Cloud Enterprise (kann auf öffentlichen oder privaten Clouds, virtuellen Maschinen oder Bare-Metal-Hardware bereitgestellt werden) als auch die Abonnementoption einer privaten Bereitstellung.

Welche Programmiersprachen unterstützt Elasticsearch?

Elasticsearch unterstützt eine Vielzahl von Sprachen und offizielle Clients sind verfügbar für:

  • Java
  • JavaScript (Node.js)
  • Go
  • .NET (C#)
  • PHP
  • Perl
  • Python
  • Ruby

Welche Textsprachen unterstützt Elasticsearch?

Elasticsearch unterstützt 34 Textsprachen, von Arabisch bis Thai, und stellt für jede von ihnen eigene Analyzers bereit. Die vollständige Liste finden Sie in der Elasticsearch Language Analyzer-Dokumentation. Weitere Sprachen lassen sich über individuelle Plugins hinzufügen.

Stellt Elasticsearch REST-APIs bereit?

Ja, Elasticsearch stellt ein vollständiges und leistungsfähiges Angebot an REST-APIs für Aufgaben wie die Prüfung der Cluster-Integrität, die Durchführung von CRUD(Create, Read, Update, and Delete)- und Suchoperationen in Indizes und für erweiterte Suchoperationen, wie Filtern und Aggregieren, bereit.