Elasticsearch Ta bort fält

Elasticsearch Ta Bort Falt



'När du arbetar med Elasticearch-index kan du stöta på ett fall där du behöver ta bort ett fält från ett befintligt dokument. Tyvärr tillhandahåller inte Elasticsearch en inbyggd begäran som vi kan använda för att utföra nämnda åtgärd.

Vi kan dock använda API för dokumentuppdatering och skicka ett skript som låter oss ta bort ett fält baserat på dess namn.'







NOTERA : Denna process kräver att du har grundläggande kunskaper om Elasticsearch-skript och API för dokumentuppdatering. Utforska gärna dokumenten eller våra handledningar om ämnet för att lära dig mer.



Låt oss dyka in.



Kontrollera om dokumentet finns

Innan du tar bort ett fält från ett specifikt dokument är det bra att se till att måldokumentet finns i indexet.





Vi kan använda sök-API:et för att hämta måldokumentet.

Anta till exempel att vi har indexet kibana_sample_logs_data. Vi kan söka i indexet efter ett dokument som innehåller en specifik IP.



NOTERA : Exemplet ovan används endast i illustrationssyfte. Du kan använda olika metoder för att verifiera om ett specifikt dokument är tillgängligt i indexet.

curl -XGET 'http://localhost:9200/kibana_sample_data_logs/_search' -H 'kbn-xsrf: rapportering' -H 'Content-Type: application/json' -d'
{
'storlek': 0,
'query': {'match': {
'ip': '171.24.97.162'
}}
}'

Resultat:

{
'tog': 3,
'timed_out': false,
'_shards': {
'totalt': 1,
'lyckad': 1,
'hoppade över': 0,
'misslyckades': 0
},
'hits': {
'totalt': {
'värde': 17,
'relation': 'eq'
},
'max_score': null,
'träffar': []
}

}

Därefter kan ett enkelt skript ta bort ett målfält från dokumentet. Börja med att logga in på din Kibana-konsol och kör kommandot:

curl -XPOST 'http://localhost:9200/kibana_sample_data_logs/_update/5pA49IIBkTjaZ6TtsiB5' -H 'kbn-xsrf: rapportering' -H 'Content-Type: application/json' -d'
{
'script': 'ctx._source.remove('\''ip'\'')'
}'

Ovanstående begäran använder ett smärtfritt kontextskript för att uppdatera dokumentet och ta bort 'ip'-fältet med angivet ID.

Produktion:

{
'_index': 'kibana_sample_data_logs',
'_id': '5pA49IIBkTjaZ6TtsiB5',
'_version': 2,
'result': 'uppdaterad',
'_shards': {
'totalt': 2,
'lyckad': 2,
'misslyckades': 0
},
'_seq_no': 14074,
'_primary_term': 1
}

När dokumentet har uppdaterats kan du verifiera genom att köra frågan.:

curl -XGET 'http://localhost:9200/kibana_sample_data_logs/_doc/5pA49IIBkTjaZ6TtsiB5' -H 'kbn-xsrf: rapportering'

Begäran ovan bör returnera data som lagras i dokumentet med angivet ID.

Vi kan verifiera att IP-fältet inte längre finns i dokumentet.

Slutsats

I den här artikeln lärde du dig hur du använder Elasticsearch-skriptfunktioner för att ta bort ett fält från ett befintligt dokument.

Tack för att du läser!!