Elasticsearch - IngestNode

index.blocks.read_only 1 verdadeiro / falso Defina como verdadeiro para tornar o índice e metadados do índice somente leitura, como falso para permitir gravações e alterações nos metadados.

Às vezes, precisamos transformar um documento antes de indexá-lo. Por exemplo, queremos remover um campo do documento ou renomear um campo e depois indexá-lo. Isso é tratado pelo nó Ingest.

Cada nó no cluster tem a capacidade de receber, mas também pode ser customizado para ser processado apenas por nós específicos.

Etapas Envolvidas

Existem duas etapas envolvidas no funcionamento do nó de ingestão -

  • Criação de um pipeline
  • Criação de um documento

Crie um pipeline

Primeiro criando um pipeline que contém os processadores e, em seguida, executando o pipeline, conforme mostrado abaixo -

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

Ao executar o código acima, obtemos o seguinte resultado -

{
   "acknowledged" : true
}

Crie um documento

Em seguida, criamos um documento usando o conversor de pipeline.

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

Ao executar o código acima, obtemos a resposta conforme mostrado abaixo -

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

Em seguida, procuramos o documento criado acima usando o comando GET conforme mostrado abaixo -

GET /logs/_doc/1

Ao executar o código acima, obtemos o seguinte resultado -

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

Você pode ver acima que 21 se tornou um número inteiro.

Sem Pipeline

Agora criamos um documento sem usar o pipeline.

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

Ao executar o código acima, obtemos o seguinte resultado -

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

Você pode ver acima que 11 é uma string sem o pipeline sendo usado.