Elasticsearch - IngestNode

index.blocks.read_only 1 verdadero / falso Establézcalo en verdadero para hacer que el índice y los metadatos del índice sean de solo lectura, falso para permitir escrituras y cambios de metadatos.

A veces necesitamos transformar un documento antes de indexarlo. Por ejemplo, queremos eliminar un campo del documento o cambiar el nombre de un campo y luego indexarlo. Esto lo maneja el nodo Ingest.

Cada nodo del clúster tiene la capacidad de ingesta, pero también se puede personalizar para que lo procesen solo nodos específicos.

Pasos involucrados

Hay dos pasos involucrados en el funcionamiento del nodo de ingesta:

  • Creando una tubería
  • Creando un documento

Crear una canalización

Primero creando una canalización que contiene los procesadores y luego ejecutando la canalización, como se muestra a continuación:

PUT _ingest/pipeline/int-converter
{
   "description": "converts the content of the seq field to an integer",
   "processors" : [
      {
         "convert" : {
            "field" : "seq",
            "type": "integer"
         }
      }
   ]
}

Al ejecutar el código anterior, obtenemos el siguiente resultado:

{
   "acknowledged" : true
}

Crear un documento

A continuación, creamos un documento utilizando el conversor de canalizaciones.

PUT /logs/_doc/1?pipeline=int-converter
{
   "seq":"21",
   "name":"Tutorialspoint",
   "Addrs":"Hyderabad"
}

Al ejecutar el código anterior, obtenemos la respuesta como se muestra a continuación:

{
   "_index" : "logs",
   "_type" : "_doc",
   "_id" : "1",
   "_version" : 1,
   "result" : "created",
   "_shards" : {
      "total" : 2,
      "successful" : 1,
      "failed" : 0
   },
   "_seq_no" : 0,
   "_primary_term" : 1
}

A continuación, buscamos el documento creado anteriormente usando el comando GET como se muestra a continuación:

GET /logs/_doc/1

Al ejecutar el código anterior, obtenemos el siguiente resultado:

{
   "_index" : "logs",
   "_type" : "_doc",
   "_id" : "1",
   "_version" : 1,
   "_seq_no" : 0,
   "_primary_term" : 1,
   "found" : true,
   "_source" : {
      "Addrs" : "Hyderabad",
      "name" : "Tutorialspoint",
      "seq" : 21
   }
}

Puede ver arriba que 21 se ha convertido en un número entero.

Sin Pipeline

Ahora creamos un documento sin usar la canalización.

PUT /logs/_doc/2
{
   "seq":"11",
   "name":"Tutorix",
   "Addrs":"Secunderabad"
}
GET /logs/_doc/2

Al ejecutar el código anterior, obtenemos el siguiente resultado:

{
   "_index" : "logs",
   "_type" : "_doc",
   "_id" : "2",
   "_version" : 1,
   "_seq_no" : 1,
   "_primary_term" : 1,
   "found" : true,
   "_source" : {
      "seq" : "11",
      "name" : "Tutorix",
      "Addrs" : "Secunderabad"
   }
}

Puede ver arriba que 11 es una cadena sin que se utilice la canalización.