Elasticsearch -Index umbenennen

Elasticsearch -Index umbenennen

Ein Elasticsearch -Index oder Indizes ist (sind) eine Datenstruktur, die Zuordnungen für verschiedene Dokumente enthält. In einer relationalen Datenbank könnte sich ein Index auf eine bestimmte Datenbank beziehen.

Ein Elasticsearch -Cluster enthält mehrere Indizes, einschließlich mehrerer Typen, die dann die Dokumente enthalten.

Das Folgende könnte die Elasticsearch -Beziehung mit einer relationalen Datenbank darstellen.

  • PostgreSQL -> Datenbank -> Tabelle -> Zeile/Spalte
  • Elasticsearch -> Index -> Typ -> Dokument

In diesem Leitfaden werden wir verschiedene Methoden erörtern, um einen vorhandenen Elasticsearch -Index umzubenennen.

Methode 1: Wiederindexing

Die erste Methode, die wir bei der Umbenennung eines Index verwenden können, ist die Reindexing -API. Mit dieser API können Sie Dokumente aus einem Quellindex in einen bestimmten Zielindex kopieren.

Die Reindedex -API kopiert jedoch nicht die Konfiguration des Quellindex in das Ziel. Daher müssen wir den Zielindex einrichten und die Konfiguration des Quellindex anwenden, bevor wir Reindedex aufrufen.

Wir können einen vollständigen Redex-Vorgang implementieren, indem wir die unten beschriebenen Schritte befolgen:

  1. Erstellen Sie einen neuen Elasticsearch -Index (Source)
  2. Holen Sie sich die Konfiguration des Index und speichern Sie ihn.
  3. Erstellen Sie einen neuen (Ziel-) Index mit der Konfiguration des Quellindex.
  4. Rufen Sie die Reindedex -API von der Quelle zum Ziel an
  5. Löschen Sie den Quellindex.

Wenn Sie einen vorhandenen Elasticsearch -Index haben, können Sie auf Schritt 2 springen

NOTIZ: In diesem Leitfaden werden wir alle Elasticsearch -Anfragen für Curl zur Verfügung stellen.

Schritt 1: Erstellen Sie einen neuen Index
Erstellen wir einen Index, der als Quelle fungiert. Der Einfachheit halber verwenden wir eine einfache Indexkonfiguration mit den meisten Standardparametern.

Wir werden eine Anfrage an den HTTP -Endpunkt von Elasticsearch geben.

Eine Beispielanforderung zum Erstellen eines Index „Test-Index“ ist unten:

curl -xput "http: // localhost: 9200/test -Index" -h 'content -type: application/json' -d '

"Einstellungen":
"Index":
"number_of_shards": 3,
"number_of_replicas": 2

,
"Mappings":
"Eigenschaften":
"field1": "Typ": "text"


'

Der nächste Schritt besteht darin, den erstellten Index Daten hinzuzufügen. Standardmäßig enthält der Index keine Dokumente.

curl -xget http: // localhost: 9200/_cat/Indices/test -Index \?v

Um Daten zum Index hinzuzufügen, führen Sie die Anforderung als: Aus

Die obige Anforderung sollte ein Dokument im Test-Index-Index erstellen.

Wir können überprüfen, ob das Dokument mit der Get -Anforderung an den Indexendpunkt existiert.

curl -xget "http: // locahost: 9200/test -Index/_SEARCH" -H 'Content -Typ: application/json' -d '

"Abfrage": "match_all":
'
''

Ein Beispielausgang ist Ans gezeigt:

Schritt 2: Quellkonfiguration abrufen
Der nächste Schritt vor der Durchführung eines Reindedex -Vorgangs besteht darin, die Konfiguration des Quellindex zu kopieren.

Wir werden zunächst die Indexeinstellung erhalten. Dazu senden wir eine HTTP -Get -Anfrage an die _Setting -API.

Einstellungen = $ (curl -xget "https: // localhost: 9200/test -Index/_Setings"))

Wir speichern die Ausgabe in einer Variablen, die wir mit dem Befehl überprüfen können:

Echo $ Einstellungen | JQ

Da die Ausgabe im JSON -Format ist, übergeben wir sie an einen JSON -Prozessor wie JQ. Ein Beispielausgang ist wie gezeigt:

Der nächste Schritt besteht darin, die Zuordnung des Index zu erhalten. In diesem Fall senden wir eine Get -Anfrage an den _mapping Endpoint als:

maping = $ (curl -xget "https: // localhost: 9200/test -Index/_mapping"))

Überprüfen Sie, ob die Ausgabe in der Variablen gespeichert wird:

Echo $ maping | JQ

Die Ausgabe ist wie gezeigt:

Kombinieren Sie als Nächst.

Das Folgende ist ein verkürzter Screenshot beider kombinierten Ausgänge (config.JSON).

Schritt 3: Erstellen Sie einen neuen Index
Es ist jetzt an der Zeit, einen neuen Index mit der Konfiguration speichern zu erstellen. Stellen Sie sicher, dass Ihre Konfiguration keine Fehler enthält.

Führen Sie den Befehl aus als:

curl -xput "http: // localhost: 9200/umbenannt-index" -h 'content -type: application/json' -d config.json '

Das Folgende ist der Inhalt in der in diesem Tutorial verwendeten JSON -Datei in der Konfiguration, JSON -Datei.

Bei erfolgreicher Schöpfung sollten Sie anerkannt werden: Richtig, wie gezeigt:

Schritt 4: Reindedex
Nachdem wir nun einen umbenannten Index ähnlich dem Quellindex haben, können wir Daten mit der Reindedex -API von der Quelle zum Ziel kopieren.

curl -xpost "http: // localhost: 9200/_reindex" -h 'content -type: application/json' -d '

"Quelle":
"Index": "Test-Index"
,
"dest":
"Index": "Umbenannt-Index"

'

Sobald Sie die REINDEX -Anforderung gestellt haben, kopiert Elasticsearch die Daten aus dem angegebenen Quellindex in den Zielindex.

Hier ist ein Beispielausgang:

Schritt 5: Quellindex löschen
Es ist nicht sinnvoll, zwei Indizes mit ähnlichen Konfiguration und Daten zu haben. Daher können wir den Quellindex fallen lassen:

curl -xdelete http: // localhost: 9200/test -Index

"Anerkannt": wahr

Methode 2: Klon -API

Der zweite und einfachste Weg zum Umbenennen und Index besteht darin, die in Elasticsearch Version 7 eingeführte Klon -API zu verwenden.4 und darüber.

Um die Klon-API zu verwenden, müssen Sie sicherstellen, dass der Quellindex nur schreibgeschützt ist und die Clustergesundheit grün ist.

Wie das Klonen funktioniert
Das Klonen funktioniert wie folgt:

  • Erstellen Sie einen neuen Elasticsearch -Index. Der neue Index sollte identische Definitionen als alter Index enthalten (Quellindex).
  • Der nächste Schritt besteht darin, ein Hard-Link-Segment des Quellindex mit dem neuen Elasticsearch-Index auszuführen.
  • Sobald der Hard-Link durchgeführt wurde, wird der neue Index mit den Definitionen und Daten des alten Index wieder geöffnet.

Schritt 1: Stellen Sie den Quellindex auf schreibgeschützte fest
Um den Quellindex auf den schreibgeschützten Modus festzulegen, verwenden wir die API von _Settings und übergeben die Info wie in der folgenden Anforderung gezeigt:

curl -xput "http: // localhost: 9200/test -Index/_Setings" -H 'Content -Typ: application/json' -d '

"Einstellungen":
"Index.Blöcke.schreiben ": wahr

'

Schritt 2: Klonquellenindex zum Ziel klonen
Um den Test-Index in einen neuen Index namens umbenannt-Cloned-Index zu klonen, können wir die Anforderung wie gezeigt ausführen:

curl -xpost “http: // localhost: 9200/test-Index/_clone/umbenannt angeklagt-Index

Unter der Annahme, dass die folgenden Anforderungen der Fall sind, sollten Sie über einen umbenannten Index des Quellindex verfügen.

  1. Der angegebene Zielindex darf nicht existieren.
  2. Der Knoten hat ausreichend Platz, um den geklonten Index zu speichern
  3. Der Quellindex hat eine gleiche Anzahl von Primärscherchen wie der angegebene Zielindex.

Abschluss

In diesem Leitfaden haben wir mithilfe von zwei Methoden einen Elasticsearch -Index umbenannt.

Vielen Dank für das Lesen!