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.