Elasticsearch - IngestNode
index.blocks.read_only | 1 vero / falso | Impostare su true per rendere l'indice e i metadati dell'indice di sola lettura, false per consentire scritture e modifiche ai metadati. |
A volte è necessario trasformare un documento prima di indicizzarlo. Ad esempio, vogliamo rimuovere un campo dal documento o rinominare un campo e quindi indicizzarlo. Questo è gestito dal nodo Ingest.
Ogni nodo del cluster ha la capacità di importare ma può anche essere personalizzato per essere elaborato solo da nodi specifici.
Passaggi coinvolti
Ci sono due passaggi coinvolti nel funzionamento del nodo di importazione:
- Creazione di una pipeline
- Creazione di un documento
Crea una pipeline
Prima creando una pipeline che contiene i processori e quindi eseguendo la pipeline, come mostrato di seguito -
PUT _ingest/pipeline/int-converter
{
"description": "converts the content of the seq field to an integer",
"processors" : [
{
"convert" : {
"field" : "seq",
"type": "integer"
}
}
]
}
Eseguendo il codice sopra, otteniamo il seguente risultato:
{
"acknowledged" : true
}
Crea un documento
Successivamente creiamo un documento utilizzando il convertitore della pipeline.
PUT /logs/_doc/1?pipeline=int-converter
{
"seq":"21",
"name":"Tutorialspoint",
"Addrs":"Hyderabad"
}
Eseguendo il codice sopra, otteniamo la risposta come mostrato di seguito:
{
"_index" : "logs",
"_type" : "_doc",
"_id" : "1",
"_version" : 1,
"result" : "created",
"_shards" : {
"total" : 2,
"successful" : 1,
"failed" : 0
},
"_seq_no" : 0,
"_primary_term" : 1
}
Successivamente cerchiamo il documento creato sopra utilizzando il comando GET come mostrato di seguito -
GET /logs/_doc/1
Eseguendo il codice sopra, otteniamo il seguente risultato:
{
"_index" : "logs",
"_type" : "_doc",
"_id" : "1",
"_version" : 1,
"_seq_no" : 0,
"_primary_term" : 1,
"found" : true,
"_source" : {
"Addrs" : "Hyderabad",
"name" : "Tutorialspoint",
"seq" : 21
}
}
Puoi vedere sopra che 21 è diventato un numero intero.
Senza pipeline
Ora creiamo un documento senza utilizzare la pipeline.
PUT /logs/_doc/2
{
"seq":"11",
"name":"Tutorix",
"Addrs":"Secunderabad"
}
GET /logs/_doc/2
Eseguendo il codice sopra, otteniamo il seguente risultato:
{
"_index" : "logs",
"_type" : "_doc",
"_id" : "2",
"_version" : 1,
"_seq_no" : 1,
"_primary_term" : 1,
"found" : true,
"_source" : {
"seq" : "11",
"name" : "Tutorix",
"Addrs" : "Secunderabad"
}
}
Puoi vedere sopra che 11 è una stringa senza che la pipeline venga utilizzata.