Elasticsearch

Hot-Warm-Cluster, Machine Learning und vieles mehr.
Elasticsearch ist eine Suchmaschine basierend auf Lucene. Umgesetzt wurde das Projekt mit Java und es speichert Dokumente in einem NoSQL-Format (JSON). Die Kommunikation zwischen Elasticsearch und dem Klienten erfolgt über ein RESTful-Webinterface. Neben Solr ist Elasticsearch der am weitesten verbreitete Suchserver. Dadurch wird der Betrieb im Rechnerverbund zur Umsetzung von Hochverfügbarkeit und Lastverteilung ermöglicht.

Aufbau

Elasticsearch teilt Indizes in mehrere Teile, die „Shards“ genannt werden.
Diese können vom Anwender auf mehrere Server aufgeteilt werden, um Rechenlast zu verteilen oder Prävention für Ausfälle der Server zu betreiben. Sobald Elasticsearch auf mehreren Servern läuft, wird einer der Server als „master“ der Gruppe bezeichnet.
Ein Shard in ein Lucene-Index und Elasticsearch nutzt Apache Lucene als core library. Dementsprechend besteht ein Elasticsearch-Index aus mehreren Lucene-Indizes, welcher wiederum aus einem Ordner mit invertierten Indizes besteht.

Funktion

Wenn ein Dokument durchsucht werden soll, dann muss es zuerst indiziert werden. Alle nötigen Informationen müssen in ein jeweiliges Dokument geschrieben werden, welches anschließend indexiert wird. Dabei ähnelt einer diese Indizes einer SQL-Tabelle.
Die Suchanfragen werden in einem JSON Format gesendet.  
Die wichtigsten Bestandteile einer Suchfrage sind folgende Parameter :

  • ‚query‘ bestimmt welche Dokumente, in welcher Reihenfolge, gesucht werden sollen.
  • ’sort‘ ermöglicht eine definierbare Sortierung der Ergebnisse.
  • ‚from‘ bestimmt die Aufteilung langer Trefferlisten auf mehreren Seiten. 
  • ’size‘ gibt die maximale Anzahl an Ergebnissen an.
  • ‚_source‘ macht es möglich, bestimmte Elemente aus einem Dokument auszugeben.