Engineering

Elasticsearch 2.0.0 GA veröffentlicht

Mit 2.799 Pull-Requests durch 477 Committer seit dem Release von Elasticsearch 1.0.0 freuen wir uns, den Release von Elasticsearch 2.0.0 GA, basierend auf Lucene 5.2.1, verkünden zu können.

Darüber hinaus veröffentlichen wir Version 2.0.0 des Sicherheits-Plugins Shield und des Benachrichtigungs-Plugins Watcher sowie eine gestraffte Version des Überwachungs-Plugins Marvel, das jetzt kostenlos in der Produktion verwendet werden kann, und neuen Open Source Editors Sense.

Sie können Elasticsearch 2.0.0 herunterladen und hier die wichtigsten Änderungen in 2.0.0 nachlesen. Eine komplette Liste der Änderungen finden Sie hier:

Change Logs für die kommerziellen Plugins können Sie hier finden:

Neu in Elasticsearch

Elasticsearch 2.0.0 bietet neue Funktionen wie zum Beispiel:

Pipeline-Aggregationen

Die Fähigkeit, Aggregationen, wie Derivate, gleitende Durchschnitte und Serienarithmetik, auf den Ergebnissen anderer Aggregationen auszuführen. Diese Funktion war clientseitig schon immer durchführbar, aber durch die Überführung der Rechenarbeit zu Elasticsearch wird es einfacher, leistungsstärkere Analyse-Querys zu konstruieren, während die Code-Anforderungen für Clients ebenso wesentlich vereinfacht werden. Dadurch eröffnen sich Möglichkeiten für Predictive Analytics und Anomaly Detection. Näheres zu Pipeline-Aggregationen finden Sie in:

Zusammenführung von Queries und Filtern

Es gibt keine Filter mehr. Alle Filterklauseln sind jetzt zu Abfrageklauseln geworden. Bei der Verwendung im Abfragekontext haben sie Auswirkungen auf die Relevanzbewertung, im Filterkontext schließen sie schlicht Dokumente aus, die nicht passen, genau wie Filter es heute tun. Diese Umstrukturierung bedeutet, dass die Abfrageausführung automatisch zur Ausführung in der effizientesten Reihenfolge optimiert werden kann. Zum Beispiel können langsame Abfragen wie Phrase- und Geo-Queries zuerst eine schnelle Näherungsphase ausführen und dann die Ergebnisse mit einer langsameren exakten Phase eingrenzen. Im Filterkontext werden häufig verwendete Klauseln automatisch im Cache gespeichert, wenn das sinnvoll ist. Weiteres finden Sie in „Bessere Query-Ausführung in Elasticsearch 2.0

Configurable store compression

Stored fields wie das Feld _source können mit LZ4 für mehr Geschwindigkeit (Standard) oder mit „DEFLATE“ für eine reduzierte Indexgröße komprimiert werden. Das ist besonders beim Logging wichtig, wo alte Indizes zu best_compression wechseln können, bevor sie optimiert werden. Weitere Informationen finden Sie in „Speicherkomprimierung in Lucene und Elasticsearch“.

Härten

Elasticsearch  läuft jetzt unter dem Java-Sicherheitsmanager, der in Sachen Sicherheit einen großen Sprung bedeutet. Durch den Sicherheitsmanager wird ein Exploit von Elasticsearch erschwert und die Auswirkung, die ein Hacker auf Ihr System haben könnte, erheblich eingeschränkt. Auch Indexierung wurde wie folgt gehärtet:

  • Dokumente werden jetzt mittels fsync auf Festplatte geschrieben, bevor Index-Anfragen bestätigt werden. Das heißt, jeder Schreibvorgang persistiert standardmäßig.
  • Alle Dateien werden per Prüfsumme überprüft, um früh eine Beschädigung feststellen zu können.
  • Alle Dateiumbenennungen sind atomar, um teilweise geschriebene Dateien zu vermeiden.

Zum Schluss eine von Systemadministratoren häufig geforderte Änderung, um zu verhindern, dass ein nicht konfigurierter Node einem öffentlichen Netzwerk beitritt: Elasticsearch verbindet sich jetzt standardmäßig nur zum localhost, und multicast wurde mit unicast ersetzt.

Leistung und Ausfallsicherheit

Neben den oben beschriebenen gab es auch eine Vielzahl kleinerer Änderungen sowohl in Elasticsearch als auch Lucene, die zusammen ein stabileres, verlässlicheres und einfach zu konfigurierendes System ergeben. Dazu gehören beispielsweise:

  • Geringere Heap-Nutzung mit standardmäßigen Doc Values, reduzierte Speichernutzung bei Merges und Roaring Bitsets für Filter-Caching.
  • Strukturierte, lesbare Exceptions.
  • Mehr Verlass auf Feedback-Loops statt auf Einstellungen für automatische Regulierung.
  • Eine große Aufräumaktion der Typ-Mappings, um diese sicher, eindeutig und verlässlich zu machen.
  • Cluster State Diffs für schnellere Änderungspropagierung und stabilere Groß-Cluster.
  • Verbesserte Komprimierung von Normen, zuvor ein großer Verbraucher des Heap-Speichers.
  • Auto-Drosselung der Merge-Operationen, ohne Einstellungen ändern zu müssen.
  • Feinkörnigere Lucene-Speicherberichte.
  • Parent/Child-Umschreibung für das Nutzen optimaler Query-Ausführung.
Core-Plugins

Die offiziell unterstützten Core-Plugins werden zur selben Zeit und mit der selben Versionsnummer wie der Elasticsearch-Core ausgeliefert. Sie müssen sich nicht länger eine komplizierte Versionsmatrix ansehen, um herauszufinden, welche Pluginversion Sie installieren müssen. Stattdessen können die Core-Plugins folgendermaßen installiert werden:

bin/plugin install analysis-icu
                

Neu in Shield und Watcher

OUnsere kommerziellen Plugins haben einige coole neue Funktionen wie zum Beispiel:

Shield

  • Zugriffskontrolle auf Feld- und Dokumentebene
  • User Impersonation
  • Individuell erweiterbare Authentication Realms
Watcher

  • Einzelne Watches aktivieren/deaktivieren.Benachrichtigungen in Slack und Hipchat.

Mehr über diese Funktionen können Sie in „Shield, Watcher, and Marvel 2.0.0 GA Released“ lesen.

Unsere kommerziellen Plugins werden wie die Open-Source-Core-Plugins zur selben Zeit und mit der selben Versionsnummer wie der Elasticsearch-Core veröffentlicht und können folgendermaßen installiert werden:

bin/plugin install license
bin/plugin install shield
bin/plugin install watcher
        

Marvel 2.0.0 kostenlos nutzbar in der Produktion

Das Überwachungs-Plugin Marvel ist von unschätzbarem Wert für unsere Kunden, die mit dessen Hilfe Probleme sowohl nach dem Auftreten diagnostizieren als diese auch während der Entstehung erkennen können. Wir haben uns sehr genau angesehen, was noch verbessert werden kann, und Marvel von Grund auf umgeschrieben:

  • Die Marvel-Benutzeroberfläche basiert jetzt auf der brandneuen Plattform Kibana.
  • Dashboards sind gestrafft worden und zeigen jetzt die wichtigsten Kenndaten an, wodurch Probleme einfacher zu erkennen sind.
  • Marvel unterstützt jetzt als kommerzielle Funktion die Überwachung mehrerer Cluster aus einer einzigen Installation.

Das Beste zum Schluss: Marvel ist jetzt für alle Benutzer kostenlos nutzbar in der Produktion. Eine Lizenz ist erforderlich, aber für alle Benutzer gebührenfrei erhältlich. Überwachung mehrerer Cluster durch Marvel ist Teil des kommerziellen Angebots.

Mehr über Marvel können Sie in „Shield, Watcher, and Marvel 2.0.0 GA Released“ lesen. 

Sense-Open-Source-Editor

Sense, der browserbasierte Anfrage- und DSL-Editor von Elasticsearch, ist jetzt als Open-Source-App, die auf der Kibana-Plattform entwickelt wurde, für alle Benutzer verfügbar. Im neuen Release wurden ein paar tolle neue Funktionen hinzugefügt: 

  • Mehrere cURL-Anfragen einfügen, um sie in Sense-Syntax zu konvertieren.
  • Mehrere Sense-Anfragen in cURL-Syntax kopieren.
  • Mehrere Anfragen auf einmal ausführen.
  • Autovervollständigungs-Datenbank für die Unterstützung von Elasticsearch 2.0 aktualisiert.

Sense kann als Kibana-App folgendermaßen installiert werden:

./bin/kibana plugin --install elastic/sense
        

Weiteres zu Sense können Sie in „The Story of Sense - Announcing Sense 2.0.0-beta1“ lesen.

Elasticsearch Migrations-Plugin

Wenn Sie ein Upgrade von Elasticsearch 1.x auf 2.0 vornehmen, ist das Elasticsearch-Migrations-Plugin der beste Anfangspunkt. Es wird als Site-Plugin in ein beliebiges 1.x Elasticsearch-Cluster installiert und erkennt jegliche Probleme, die vor einem Upgrade gelöst werden müssen, wie z. B. frühe Lucene 3-Indizes und problematische Mappings (Näheres finden Sie in „The Great Mapping Refactoring“), die in Elasticsearch 2.0.0 nicht mehr funktionieren. “

Sie können die Anleitung für dieses Plugin im Elasticsearch-Migrationshauptverzeichnis finden.

Schlussfolgerung

Bitte laden Sie Elasticsearch 2.0.0 herunter, testen Sie es und lassen Sie uns Ihre Meinung auf Twitter (@elastic) oder in unserem Forum wissen. Jegliche Probleme können Sie auf der GitHub Issues Seite melden.