Automatisierte Verwaltung von Indizes bei Elastic

Elasticsearch: Indizes automatisiert verwalten

Index Lifecycle Management (ILM) für bestehende Transform-Indizes: in 4 Schritten zur Implementierung

Elasticsearch ist ein leistungsstarkes Suchtool auf Basis von Lucene, das eine verteilte, REST-konforme Suche zusammen mit einer Analyse-Engine bietet. Die Daten werden in einem NoSQL-Format in einer logischen Gruppe namens Index gespeichert. Um diese Indizes effektiv zu verwalten und Prozesse zu automatisieren, bietet Elasticsearch mehrere Tools.

In diesem Beitrag lernen Sie die verschiedenen Tools kennen, um die Indizes von Elasticsearch zu verwalten. Außerdem erfahren Sie, wie Sie in 4 Schritten eine regelmäßige Aktualisierung automatisieren.

Inhaltsverzeichnis:

  1. Transforms (Transform-Index)
  2. Index Lifecycle Management (ILM)
  3. Integration von ILM und Transforms:
    Schritt 1: Erstellen Sie eine Lifecycle Policy
    Schritt 2: Erstellen Sie ein Index-Template
    Schritt 3: Aktualisieren Sie den Transform-Job
    Schritt 4: Verifizieren
  4. Zusammenfassung

Transforms (Transform-Index)

Ein Transform-Index ist eine Möglichkeit, einen neuen Index basierend auf einer Zusammenfassung bestehender Indizes zu generieren. Auf diese Weise können Benutzer sofort Erkenntnisse gewinnen, ohne jedes Mal Abfragen oder Analysebefehle zum Abrufen von Informationen ausführen zu müssen. Die beiden verfügbaren Typen von Transform-Indizes sind Pivot-Transforms und Latest Transforms. Transforms sind Aufgaben, die entweder kontinuierlich ausgeführt werden und den Transform-Index in einem bestimmten Intervall aktualisieren oder auch einmalig ausgeführt werden. Diese Tasks werden auf Clusterebene ausgeführt und sind daher widerstandsfähig gegenüber Knotenausfällen.

Index Lifecycle Management (ILM)

Zur Verwaltung und Pflege von Indizes stellt Elasticsearch noch eine weitere Funktion bereit: Index Lifecycle Management (ILM). Wie der Name schon sagt ermöglicht es dem Benutzer, die Indizes basierend auf Leistungs-, Belastbarkeits- und Aufbewahrungsanforderungen automatisiert zu verwalten. Beispielsweise kann das System einen neuen Index erstellen, wenn ein vorhandener Index eine bestimmte Größe oder Anzahl von Dokumenten erreicht. Das System kann einen Index basierend auf der Größe oder Lebensdauer eines Index automatisch löschen. Das System kann Indizes basierend auf Kalendereinheiten wie Jahren, Monaten, Tagen usw. erstellen, um Indizes effizienter zu verwalten.

Integration von ILM und Transforms

Bei einigen Fällen muss eine ILM-Policy auf einen vorhandenen Transform-Index angewendet werden. Dies kann kompliziert sein, je nachdem, wie die Eigenschaften und Attribute des Transform-Index sind und welche Art von ILM-Richtlinie angewendet werden muss. Sie haben beispielsweise einen Transform-Index erstellt, der ständig aktualisiert wird; nach einiger Zeit stellen Sie aber fest, dass der Transform-Index schneller als erwartet wächst und möglicherweise nur die Daten der letzten 60 Tage wichtig sind.

Anstatt Daten in regelmäßigen Abständen manuell aus dem Transform-Index zu löschen, könnten Sie eine ILM-Policy anwenden. Die ILM-Policy erstellt nach 30 Tagen einen neuen Transform-Index und löscht den alten Index nach 60 Tagen. Dadurch sind immer die Daten der letzten 60 Tage verfügbar und ältere Daten werden automatisch gelöscht.

Im folgenden Abschnitt erläutern wir die Schritte, die erforderlich sind, um das oben genannte Szenario zu automatisieren und eine ILM-Policy auf einen vorhandenen Transform-Index anzuwenden.

Voraussetzung: Wichtig ist, dass der Name des bestehenden Transform-Index mit einer Regex übereinstimmt: ^.*-\d+. Ein Beispiel wäre: myIndex-000001. Wenn der Name Ihres vorhandenen Transform-Index nicht auf dieses Muster passt, können Sie einen neuen Index mit diesem Muster erstellen und die Reindex-API verwenden, um die Daten mit einem Alias ​​in den neuen Index zu kopieren. Der Transform-Job kann dann auf diesen neuen Index-Alias verweisen. Hier empfiehlt es sich, dem Index einen Alias ​​hinzuzufügen und diesen Alias ​​auch im Transform-Job zu verwenden. Für die folgenden Schritte haben wir bereits einen Transform-Job, der Daten zu einem Index mit dem Namen „transformed-index-000001“ und mit dem Alias ​​„transformed-index-alias“ hinzufügt.

Schritt 1: Erstellen Sie eine Lifecycle Policy

  1. Gehen Sie in der Seitenleiste zu Stack Management und klicken Sie im Abschnitt „Daten“ auf „Index Lifecycle Policies“.
  2. Klicken Sie auf die Schaltfläche „Create Policy“.
  3. Geben Sie der Policy einen beliebigen Namen. Wir werden sie „Transform-Rollover-Policy“ nennen.
  4. Klicken Sie im Abschnitt „Hot Phase“ auf „Advanced Settings“ und deaktivieren Sie „Use recommended settings“. Dies öffnet weitere Optionen. Legen Sie das Höchstalter auf 30 Tage fest und stellen Sie sicher, dass „Enable Rollover“ auf „true“ gesetzt ist.
  5. Aktivieren Sie die Cold Phase im Abschnitt Cold Phase und stellen Sie „Move data into phase when:“ auf 30 Tage ein.
  6. Stellen Sie sicher, dass Sie die Option in der unteren linken Ecke auf Löschen setzen, anstatt unendlich zu speichern.
  7. Hier sehen Sie eine Delete Phase. Legen Sie „Move data into phase when:“ auf 30 Tage fest.
  8. Klicken Sie auf die Schaltfläche „Save policy“.

Schritt 2: Erstellen Sie ein Index-Template

  1. Gehen Sie zu Index Management und klicken Sie auf den Tab: Index Templates.
  2. Klicken Sie auf die Schaltfläche „Create template“ und benennen Sie die Vorlage. Wir werden sie „transform-Index-template“ nennen.
    Für das Index Pattern sollten Sie den Namen des Transform-Index eingeben. In unserem Fall schreiben wir „transformed-index-*“. Schreiben Sie am Ende „*“, um sicherzustellen, dass diese Vorlage automatisch auf alle neu erstellten Indizes angewendet wird, die dem Muster entsprechen.
  3. Klicken Sie auf „Next“ und dann erneut auf „Next“, um zur Seite „Index settings“ zu gelangen. Fügen Sie den Index-Settings das folgende JSON hinzu:
Index settings

Stellen Sie sicher, dass die Anzahl der Shards und andere derartige Einstellungen mit denen Ihres vorhandenen Transform-Index übereinstimmen.

Schritt 3: Aktualisieren Sie den Transform-Job

  1. Gehen Sie zum Stack Management und klicken Sie unter dem Abschnitt „Data“ auf Transforms.
  2. Suchen Sie Ihren Transform-Job und klicken Sie auf die drei Punkte unter der Spalte „Actions“ und klicken Sie auf „Edit“.
Transform-Job Edit
  1. Suchen Sie den Abschnitt „Destination Index“ und ändern Sie den Zielindex in den von Ihnen erstellten Alias. In unserem Fall „transformed-index-alias“ und klicken Sie auf die Schaltfläche „update“.
Destination Index

Wenn der Transform-index von einer externen Anwendung verwendet wurde, müssen Sie beachten, dass die Anwendung jetzt auf „transformed-index-alias“ zugreifen sollte.

Schritt 4: Verifizieren

Prüfen Sie, ob die Rollover richtig funktionieren. Der Rollover-Prozess kann durch den Indexzustand beeinträchtigt werden, der durch gelbe oder grüne Farbe angezeigt wird. Stellen Sie sicher, dass der Clusterzustand immer grün ist. Zu beachten ist, dass nach jedem Rollover ein neuer Index mit einem Namen mit um eins erhöhter Nummer am Ende erstellt wird (transformed-index-000001, transformed-index-000002 etc.). Die alten Indizes sollten um die festgelegte Zeit herum gelöscht werden. Hierbei ist zu beachten, dass Elasticsearch nach einem bestimmten Intervall die Rollover-Anforderung prüft, so dass der Rollover zeitlich möglicherweise nicht mit 100-prozentiger Genauigkeit erfolgt. Sie können den aktuellen Rollover-Status mit dem folgenden Befehl in den DEV-Tools überprüfen:

GET <target>/_ilm/explain

Dabei kann <target> ein Index oder ein Index-Alias ​​sein.

Zusammenfassung

Elasticsearch bietet mit ILM und Transforms hilfreiche Tools, um die Verwaltung von Indizes zu automatisieren. Diese Tools lassen sich  auch sehr gut miteinander kombinieren, damit die Anforderungen an das Index Management erfüllt werden können. Sowohl Transforms als auch ILM helfen Benutzern, die Verwaltung von Indizes, die für Analysen verwendet werden, effizient zu automatisieren und nützliche Informationen als Zusammenfassung von Datenindizes bereitzustellen.

Elasticsearch is a trademark of Elasticsearch BV, registered in the U.S. and in other countries.

Benötigen Sie Unterstützung bei der Einrichtung von Elasticsearch und seinen vielen Tools und Features?

Arsal Jalib

Arsal Jalib

... hat seinen Master in Informatik an der TU Berlin mit seiner Abschlussarbeit zum Thema „Deep Learning“ abgeschlossen. Er war mehrere Jahre als Softwarequalitätsbeauftragter und Softwareentwickler tätig. Derzeit interessiert er sich eher für Such- und Analysethemen und liebt es, neue Dinge zu lernen. Lieblingsdateiformat: .txt und .json