Wie ändere ich den Feldtyp in Elasticsearch??

Wie ändere ich den Feldtyp in Elasticsearch??
Mit der _ Mapping -API können Sie vorhandene Felder aktualisieren oder einem vorhandenen Index neue Felder hinzufügen.

NOTIZ: Um Änderungen an einem Index durchzuführen, stellen Sie sicher.

Grundnutzung

Um einen Feldtyp zu ändern, senden Sie eine Put -Anforderung an die _mapping -API, gefolgt von der Anforderungsbehörde. Die Anforderungsstelle enthält den Eigenschaftenparameter und die Zuordnung des Zielfelds. Stellen Sie beim Erstellen eines neuen Feldes sicher, dass Sie den Feldname, die Typ- und Zuordnungsparameter einfügen.

Beispielsweise ändert die folgende Anforderung den Feldtyp von Ganzzahl nach lang.

Put /my-Index /_mapping

"Eigenschaften":
"Grundpreis":
"Typ": "lang"


Nach erfolgreicher Fertigstellung sollten Sie eine Ausgabe als:


"Anerkannt": wahr

Neuindexing-Methode

In den meisten Fällen hindert Elasticsearch Sie daran, den Feldtyp eines vorhandenen Index zu aktualisieren. Dies könnte dazu führen, dass die vorliegenden Daten ungültig werden und Fehler im Index verursachen.

Wenn Sie den Typ eines vorhandenen Feldes noch aktualisieren möchten, können Sie dies in wenigen einfachen Schritten tun.

  1. Erstellen Sie einen neuen Index mit den richtigen Zuordnungsinformationen, bei denen der Feldtyp in den gewünschten Typ geändert wird.
  2. Ziehen Sie die Daten von Ihrem alten Index wieder in den neuen Index ein.
  3. Entfernen Sie den alten Index

Mit dieser Methode können Sie die minimale Ausfallzeit für Ihren Index reduzieren.

Erstellen eines alten Index

Beginnen wir mit dem Erstellen eines Index mit dem falschen Feldtyp.

Put /Change-Me

"Mappings":
"Eigenschaften":
"Ausweis":
"Typ": "Integer"
,
"Nutzername":
"Text eingeben"



Im obigen Beispiel haben wir einen einfachen Index mit den beiden Feldern: ID und Benutzername. Die Feldtypen sind ganzzahl und Text.

Nehmen wir an, das Feld enthält Daten, wie in der folgenden Abfrage gezeigt:

Post /Change-me /_doc


"id": 1000,
"Benutzername": "Root"

Post /Change-me /_doc

"id": 1001,
"Benutzername": "Andere"

Die beiden oben genannten Abfragen erstellen ein Dokument mit den in der Anforderungsbehörde angegebenen Daten.

Stellen Sie sicher, dass die Daten vorhanden sind:

Get /ändere me /_search?hübsch

"Anfrage":
"match_all":

Wir sollten die beiden Datensätze wie gezeigt sehen:

Erstellen Sie einen neuen Index

Angenommen, wir möchten das ID -Feld von einer Ganzzahl in ein Schlüsselwort ändern. Wir werden zunächst einen neuen Index mit dem Typ als Keywords erstellen.

Put /Change-Me-Reindex

"Mappings":
"Eigenschaften":
"Ausweis":
"Typ": "Schlüsselwort"
,
"Nutzername":
"Text eingeben"



In der obigen Anforderung erstellen wir einen neuen Index und setzen den ID -Typ auf ein Schlüsselwort.

Index die alten Daten erneut

Der nächste Schritt besteht darin, die Daten aus dem alten Index zum neuen zu index. Die Anfrage dafür ist unten:

Post /_reindex

"Quelle":
"Index": "Change-Me"
,
"dest":
"Index": "Change-me-Reindex"

Die obige Anfrage kopiert die Dokumente aus dem alten Index auf den neuen, wobei der Feldtyp von einer Ganzzahl zu einem Schlüsselwort ändert.

Ausgabe aus der obigen Abfrage:


"Nimm": 8,
"Timed_out": Falsch,
"Gesamt": 4,
"aktualisiert": 0,
"erstellt": 4,
"gelöscht": 0,
"Chargen": 1,
"Version_Conflicts": 0,
"NOOPS": 0,
"Wiederholungen":
"Bulk": 0,
"Suche": 0
,
"Drosseled_millis": 0,
"Requests_per_second": -1.0,
"Drosseled_until_millis": 0,
"Misserfolge": []

Löschen Sie den alten Index

Nachdem wir einen aktualisierten Index mit der richtigen Zuordnung haben, ist es Zeit, den alten Index zu entfernen. Wir können dies tun, indem wir eine Löschanforderung an den Index senden als:

Löschen /wechseln-me

Nach erfolgreicher Entfernung sollten Sie eine Ausgabe als:


"Anerkannt": wahr

Erstellen Sie Index alias

Wenn Sie Anwendungen mit dem alten Index hätten, können sie nicht mehr funktionieren, da dies nicht mehr existiert.

Wir können dies lösen, indem wir einen Alias ​​für den neuen Index mit dem Namen des alten Index erstellen.

Put/Change-Me-Reindex/_alias/Change-Me

Die obige Anfrage sollte einen Alias ​​für den neuen Index erstellen.

Abschluss

In diesem Leitfaden haben Sie festgestellt, wie Sie den Typ eines vorhandenen Feldes in einem Elasticsearch -Index ändern können.