ElaSticSearch Rimuovere il campo

ElaSticSearch Rimuovere il campo

“Quando si lavora con gli indici di Elasticarch, è possibile incontrare un'istanza in cui è necessario rimuovere un campo da un documento esistente. Sfortunatamente, Elasticsearch non fornisce una richiesta nativa che possiamo usare per eseguire la suddetta azione.

Possiamo, tuttavia, utilizzare l'API di aggiornamento del documento e passare uno script che ci consente di rimuovere un campo in base al suo nome."

NOTA: Questo processo richiede di avere una conoscenza di base degli script di Elasticsearch e dell'API di aggiornamento del documento. Sentiti libero di esplorare i documenti o i nostri tutorial sull'argomento per saperne di più.

Immerciamoci.

Controlla se esiste un documento

Prima di rimuovere un campo da un documento specifico, è bene assicurarsi che il documento target esista all'interno dell'indice.

Possiamo usare l'API di ricerca per recuperare il documento target.

Ad esempio, supponiamo di avere l'indice kibana_sample_logs_data. Possiamo cercare all'indice per un documento che contiene un IP specifico.

NOTA: L'esempio sopra viene utilizzato solo a scopo illustrativo. È possibile utilizzare vari metodi per verificare se un documento specifico è disponibile nell'indice.

Curl -xget "http: // localhost: 9200/kibana_sample_data_logs/_search" -h "kbn -xsrf: reporting" -h "contenuti -type: applicazione/json" -d '

"dimensione": 0,
"query": "match":
"IP": "171.24.97.162 "

'

Output risultante:


"preso": 3,
"timed_out": false,
"_Shards":
"totale": 1,
"successo": 1,
"saltato": 0,
"fallito": 0
,
"colpi":
"totale":
"Valore": 17,
"Relazione": "EQ"
,
"max_score": null,
"colpi": []

Successivamente, un semplice script può rimuovere un campo target dal documento. Inizia accedendo alla console Kibana ed esegui il comando:

Curl -Xpost "http: // localhost: 9200/kibana_sample_data_logs/_update/5pa49iibktjaz6ttsib5" -H "kbn -xsrf: reporting" -h "contenuti -type: applicazione/json" -d '

"Script": "CTX._fonte.Rimuovi ('\ "ip' \") ""
'

La richiesta di cui sopra utilizza uno script di contesto indolore per aggiornare il documento e rimuovere il campo ""IP"" con l'ID specificato.

Produzione:


""_index"": ""kibana_sample_data_logs"",
""_id"": ""5pa49iibktjaz6ttsib5"",
""_version"": 2,
""Risultato"": ""Aggiornato"",
""_Shards"":
""totale"": 2,
""successo"": 2,
""fallito"": 0
,
""_seq_no"": 14074,
""_primary_term"": 1

Una volta aggiornato il documento, è possibile verificare eseguendo la query.:

Curl -xget ""http: // localhost: 9200/kibana_sample_data_logs/_doc/5pa49iibktjaz6ttsib5"" -h ""kbn -xsrf: reporting""

La richiesta sopra deve restituire i dati memorizzati nel documento con l'ID specificato.

Possiamo verificare che il campo IP non sia più nel documento.

Conclusione

In questo articolo, hai imparato come utilizzare le funzionalità di scripting di Elasticsearch per rimuovere un campo da un documento esistente.

Grazie per aver letto!!

"