Campo Rimuovi Elasticsearch

Campo Rimuovi Elasticsearch



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

Tuttavia, possiamo 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 una conoscenza di base degli script Elasticsearch e dell'API di aggiornamento dei documenti. Sentiti libero di esplorare i documenti o i nostri tutorial sull'argomento per saperne di più.



Immergiamoci.



Controlla se il documento esiste

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





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

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



NOTA : L'esempio sopra è 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 'Tipo di contenuto: application/json' -d'
{
'dimensione': 0,
'query': {'match': {
'ip': '171.24.97.162'
}}
}'

Uscita risultante:

{
'preso': 3,
'timed_out': falso,
'_schegge': {
'totale': 1,
'riuscito': 1,
'saltato': 0,
'fallito': 0
},
'colpi': {
'totale': {
'valore': 17,
'relazione': 'eq'
},
'max_score': nullo,
'colpi': []
}

}

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

curl -XPOST 'http://localhost:9200/kibana_sample_data_logs/_update/5pA49IIBkTjaZ6TtsiB5' -H 'kbn-xsrf: reporting' -H 'Tipo di contenuto: application/json' -d'
{
'script': 'ctx._source.remove('\''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',
'_versione': 2,
'risultato': 'aggiornato',
'_schegge': {
'totale': 2,
'riuscito': 2,
'fallito': 0
},
'_seq_no': 14074,
'_termine_primario': 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 di cui sopra dovrebbe 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!!