Elasticsearch Reindedex -Änderungsfeldtyp

Elasticsearch Reindedex -Änderungsfeldtyp

Die Arbeit mit Datenbanken macht sehr viel Spaß, kann aber manchmal eine Herausforderung sein, insbesondere wenn es sich um bereits bestehende Daten handelt.

Wenn Sie beispielsweise den Typ eines bestimmten Feldes ändern möchten, müssen Sie möglicherweise den Service abnehmen, der schwerwiegende Auswirkungen haben kann, insbesondere in Diensten, die große Datenmengen verarbeiten.

Glücklicherweise können wir die leistungsstarken Funktionen von Elasticsearch wie Reindedexing, Einnahmeknoten, Pipelines und Prozessoren verwenden, um solche Aufgaben sehr einfach zu machen.

In diesem Tutorial werden Ihnen angezeigt. Die Verwendung dieses Ansatzes wird Ausfallzeiten beseitigen, die sich auf Dienste auswirken und gleichzeitig die Aufgaben des Feldtyp -Änderungsaufgabens ausführen können.

Einführung in die Einnahmeknoten

Mit Elasticsearchs Ingest-Knoten können Sie Dokumente vor der Indexierung vorbereiten.

Ein Elasticsearch -Knoten ist eine spezifische Instanz von Elasticsearch; Verbundene Knoten (mehr als eins) machen einen einzelnen Cluster.

Sie können die im laufenden Cluster verfügbaren Knoten mit der Anfrage anzeigen:

Get /_nodes /

Der Curl -Befehl dafür ist:

curl -xget "http: // localhost: 9200/_nodes/"

Durch die Ausführung dieses Befehls sollten Sie massive Informationen über die Knoten geben, wie unten gezeigt (abgeschnittene Ausgabe):


"_nodes":
"Gesamt": 3,
"erfolgreich": 3,
"fehlgeschlagen": 0
,
"cluster_name": "22e0bee6ef91461d82d9b0f1b4b13b4a",
"Knoten":
"gslmjtkytemoox-eo7em4w":
"Name": "Instance-0000000003",
"Transport_address": "172.28.86.133: 19925 ",
"Host": "172.28.86.133 ",
"IP": "172.28.86.133 ",
"Version": "7.10.2 ",
"Build_Flavor": "Standard",
"Build_type": "Docker",
"Build_hash": "747E1CC71DEF077253878A59143C1F785AFA92B9",
"Total_indexing_buffer": 214748364,
"Rollen": [
"Daten",
"Data_cold",
"Data_Content",
"Data_hot",
"Data_Warm",
"aufnehmen",
"Meister",
"remote_cluster_client",
"verwandeln"
],
"Attribute":
"LOGICAL_AVAGLEALAFITÄT_ZONE": "Zone-0",
"Server_Name": "Instance-0000000003.22e0bee6ef91461d82d9b0f1b4b13b4a ",
"availability_zone": "US-west-1c",
"Xpack.installiert ":" True ",
"Instance_Configuration": "AWS.Daten.Highio.i3 ",
"verwandeln.Knoten ":" wahr ",
"Region": "US-West-1"
,
"Einstellungen" :
"S3":
"Klient" :
"Elastic-Internal-22E0BE":
"Endpunkt": "s3-us-west-1.Amazonawen.com "


,
--------------------------------Ausgang abgeschnitten---------------------

Standardmäßig ermöglichen alle Elasticsearch -Knoten die Einnahme und können die Einnahmeoperationen abwickeln. Für starke Einnahmeoperationen können Sie jedoch einen einzelnen Knoten erstellen, der nur der Einnahme gewidmet ist.

Um Pre_Process zu verarbeiten, müssen wir vor der Indexierung der Dokumente eine Pipeline definieren, die die Präprozessorenserie festlegt.

Präprozessoren sind Anweisungen, die um eine Pipeline gewickelt sind und einzeln ausgeführt werden.

Das Folgende ist die allgemeine Syntax, wie eine Pipeline definiert wird:


"Beschreibung": "Konvertieren Sie mich",
"Prozessoren": [
"Konvertieren" :
"Feld": "id",
"Typ": "Integer"
]

Die Beschreibung Eigenschaft sagt, was die Pipeline erreichen soll. Der nächste Parameter sind die Präprozessoren, die in der Reihenfolge ihrer Ausführung als Liste weitergegeben werden.

Erstellen Sie eine Pipeline um Konvertiten

Um eine Pipeline zu erstellen, mit der wir einen Typ konvertieren, verwenden Sie die Put -Anforderung mit dem _ingest -API -Endpunkt als:

Legen Sie _ingest/pipeline/convert_pipeline ab

"Beschreibung": "Konvertiert das Feld Dayofweek von einer Lange von Ganzzahl",
"Prozessoren": [

"Konvertieren" :
"Feld": "Tagofweek",
"Typ": "lang"


]

Verwenden Sie für Curl den Befehl:

curl -xput "http: // localhost: 9200/_ingest/pipeline/convert_pipeline" -h 'content -type: application/json' -d '"Beschreibung": "konvertiert das Feld Dayofweek in eine lange von der Ganzzahl" "," Prozessoren ": [" Convert ": " Feld ":" Dayofweek "," Typ ":" Long "] '

Reindedex und konvertieren Typ

Sobald wir die Pipeline im Einnahmeknoten haben, müssen wir nur die Indexierungs -API aufrufen und die Pipeline als Argument im Dest der Anforderungsbehörde wie folgt übergeben:

Post _reindex

"Quelle":
"Index": "Kibana_Sample_Data_flights"
,
"dest":
"Index": "kibana_sample_type_diff",
"Pipeline": "convert_pipeline"

Für Curl:

curl -xpost "http: // localhost: 9200/_reindex" -h 'content -type: application/json' -d '"source": "index": "kibana_sample_data_flights", "dest": "index index ":" kibana_sample_type_diff "," pipeline ":" convert_pipeline " '

Überprüfen Sie die Konvertierung

Um zu überprüfen, ob die Pipeline korrekt angewendet wurde, verwenden Sie die GET -Anforderung, um dieses bestimmte Feld als:

Get/kibana_sample_data_flights/_mapping/field/tayofweek
Get/kibana_sample_type_diff/_mapping/field/tayofweek

Dies sollte die Daten als:

-----------------------Originalindex---------------------------

"kibana_sample_data_flights":
"Mappings":
"Wochentag" :
"full_name": "Tagofweek",
"Kartierung" :
"Wochentag" :
"Typ": "Integer"






-------------------------Reindedexed Daten-------------------------------

"kibana_sample_type_diff":
"Mappings":
"Wochentag" :
"full_name": "Tagofweek",
"Kartierung" :
"Wochentag" :
"Typ": "lang"





Abschluss

In diesem Leitfaden haben wir uns untersucht.

Betrachten Sie die Dokumentation, um mehr zu erfahren.

https: // www.elastisch.CO/Guide/EN/Elasticsearch/Referenz/Master/Einnahme.html