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.