Elasticsearch

Bei Elasticsearch handelt es sich um Open-Source Suchmaschine, die auf der Java-Programmbibliothek Lucene basiert. Es ist vor allem darauf ausgelegt, selbst bei riesigen Datenmengen, einen großen Datendurchsatz bei Suchanfragen zu erfassen.

Indizes, Shards & Nodes

Die Daten legt das System im Index ab, welcher wiederum aus mehreren Shards (= Stücken) besteht. Ein Index wird innerhalb eines Clusters (= Gruppe von Datenobjekten) auf Nodes verteilt. Beispielsweise besteht ein Index aus 2 Shards und jeder Shard ist auf 2 Nodes verfügbar, wodurch das System eine hohe Ausfallsicherheit gewährleistet.

Funktion

Elasticsearch sucht und indiziert Dokumente und speichert die Suchergebnisse in einem NoSQL-Format. Ein solches Datenformat ist die JavaScript Object Notation, kurz JSON, die den Datenaustausch zwischen Anwendungen ermöglicht. JSON ist einfach zu lesen und zu schreiben. Die Suchanfragen (engl. queries) werden ebenfalls im JSON-Format an Electricsearch weitergeleitet. Kommuniziert wird über eine RESTful-Schnittstelle.

Besonderheiten von Elasticsearch

Elasticsearch ist durch einige besondere Features charakterisiert. Es ist z.B. besonders schnell, die Suche erfolgt nahezu in Echtzeit. Außerdem lassen sich bei einem möglichen Serverabsturz Indizes einfach wiederherstellen; es handelt sich daher (wie schon erwähnt) um ein besonders ausfallsicheres System.

Jeder Index kann theoretisch eigene Einstellungen haben. Er muss nicht unbedingt auf einem Schema basieren, daher ist auch die Art der dort abgelegten Daten nicht von Belang.

Elasticsearch skaliert außerdem vertikal. Man kann das Such-Cluster bei schnell wachsenden Datenmengen jederzeit erweitern, beispielsweise durch das Bereitstellen von Speicherplatz oder durch Hinzufügen neuer Hardware-Systeme. Diese Funktion ist besonders in Bezug auf Big Data von großer Bedeutung.