Elasticsearch - IngestNode
index.blocks.read_only | 1 wahr / falsch | Auf true setzen, um den Index und die Indexmetadaten schreibgeschützt zu machen, false, um Schreib- und Metadatenänderungen zuzulassen. |
Manchmal müssen wir ein Dokument transformieren, bevor wir es indizieren. Zum Beispiel möchten wir ein Feld aus dem Dokument entfernen oder ein Feld umbenennen und es dann indizieren. Dies wird vom Ingest-Knoten erledigt.
Jeder Knoten im Cluster kann aufgenommen werden, er kann jedoch auch so angepasst werden, dass er nur von bestimmten Knoten verarbeitet wird.
Beteiligte Schritte
Das Arbeiten des Aufnahmeknotens umfasst zwei Schritte:
- Erstellen einer Pipeline
- Dokument erstellen
Erstellen Sie eine Pipeline
Erstellen Sie zuerst eine Pipeline, die die Prozessoren enthält, und führen Sie dann die Pipeline aus, wie unten gezeigt -
PUT _ingest/pipeline/int-converter
{
"description": "converts the content of the seq field to an integer",
"processors" : [
{
"convert" : {
"field" : "seq",
"type": "integer"
}
}
]
}
Beim Ausführen des obigen Codes erhalten wir das folgende Ergebnis:
{
"acknowledged" : true
}
Erstellen Sie ein Dokument
Als nächstes erstellen wir ein Dokument mit dem Pipeline-Konverter.
PUT /logs/_doc/1?pipeline=int-converter
{
"seq":"21",
"name":"Tutorialspoint",
"Addrs":"Hyderabad"
}
Beim Ausführen des obigen Codes erhalten wir die Antwort wie unten gezeigt -
{
"_index" : "logs",
"_type" : "_doc",
"_id" : "1",
"_version" : 1,
"result" : "created",
"_shards" : {
"total" : 2,
"successful" : 1,
"failed" : 0
},
"_seq_no" : 0,
"_primary_term" : 1
}
Als nächstes suchen wir nach dem oben erstellten Dokument mit dem Befehl GET wie unten gezeigt -
GET /logs/_doc/1
Beim Ausführen des obigen Codes erhalten wir das folgende Ergebnis:
{
"_index" : "logs",
"_type" : "_doc",
"_id" : "1",
"_version" : 1,
"_seq_no" : 0,
"_primary_term" : 1,
"found" : true,
"_source" : {
"Addrs" : "Hyderabad",
"name" : "Tutorialspoint",
"seq" : 21
}
}
Sie können oben sehen, dass 21 eine ganze Zahl geworden ist.
Ohne Pipeline
Jetzt erstellen wir ein Dokument ohne Verwendung der Pipeline.
PUT /logs/_doc/2
{
"seq":"11",
"name":"Tutorix",
"Addrs":"Secunderabad"
}
GET /logs/_doc/2
Beim Ausführen des obigen Codes erhalten wir das folgende Ergebnis:
{
"_index" : "logs",
"_type" : "_doc",
"_id" : "2",
"_version" : 1,
"_seq_no" : 1,
"_primary_term" : 1,
"found" : true,
"_source" : {
"seq" : "11",
"name" : "Tutorix",
"Addrs" : "Secunderabad"
}
}
Sie können oben sehen, dass 11 eine Zeichenfolge ist, ohne dass die Pipeline verwendet wird.