Heute möchte ich ein Open Source Projekt vorstellen, welches wir mittlerweile in fast allen Projekten einsetzen: ElasticSearch. In diesem Blog-Post möchte ich einen kurzen Überblick zu ElasticSearch geben und aufzeigen, wofür wir es verwenden.
[English version below]
Was ist ElasticSearch?
ElasticSearch ist eine Such-Engine. Ähnlich wie Solr setzt sie auf Lucene auf und ermöglicht fein abgestimmte Volltextsuchen in JSON-Dokumenten. Meine persönliche Highlight-Liste ist die folgende:
- Runterladen, Starten: Läuft. Die Einstiegshürde für ElasticSearch ist sehr gering; es funktioniert einfach. Man verwendet dann die REST-API, um mit ElasticSearch zu interagieren.
- Die Suchanfragen werden als JSON formuliert – auch das senkt die Einstiegshürde.
- Das Such-Verhalten kann sehr fein abgestimmt werden, indem man das "Mapping" verändert. Insgesamt ist ElasticSearch aber schema-frei, d.h. man kann beliebige JSON-Strukturen indizieren.
- Neben der Suche kann man Daten mit Hilfe der Aggregations-API aufsummieren, gruppieren, etc.
- ... und das ganze bei einer grandiosen Performance!
Mittlerweile gibt es extrem gute Dokumentation: Neben der Referenz-Doku ist auch ElasticSearch – The Definitive Guide als Handbuch online verfügbar.
Wofür nutzen wir ElasticSearch?
Neben der Verwendung als Such-Engine nutzen wir sie auch als NoSQL-Datenspeicher in unseren Anwendungen, da sich viele Problemstellungen mit Hilfe von cleverer Indizierung und den richtigen Suchanfragen lösen lassen.
- Wir haben für TYPO3 Neos einen Connector geschrieben, um Inhalte aus Neos ins ElasticSearch zu packen und zu durchsuchen.
- Bei einigen unserer Kunden nutzen wir ElasticSearch als Cache, welcher langsame Daten-Zugriffe beschleunigt. Wir legen darin auch bspw. Session- und Nutzerdaten ab.
- Wir nutzen die Facettierungs- und Aggregationsfunktionen zum Darstellen großer Datenmengen.
- Um Logfiles zu analysieren, hat sich die Kombination von Mozilla Heka mit ElasticSearch und Kibana als gutes Werkzeug erwiesen.
Für uns hat sich ElasticSearch wirklich als "Schweizer Taschenmesser" erwiesen, welches die relationalen Datenbanken, die wir oft in Projekten verwenden, sehr gut ergänzt.
Sprecht uns einfach an, wenn ihr Fragen zu ElasticSearch habt, wir helfen und beraten euch gern!