Elasticsearch veld verwijderen

Elasticsearch Veld Verwijderen



“Als je met Elasticsearch-indexen werkt, kun je een instantie tegenkomen waarbij je een veld uit een bestaand document moet verwijderen. Helaas biedt Elasticsearch geen native request die we kunnen gebruiken om de genoemde actie uit te voeren.

We kunnen echter de document-update-API gebruiken en een script doorgeven waarmee we een veld kunnen verwijderen op basis van zijn naam.'







OPMERKING : Voor dit proces moet u basiskennis hebben van Elasticsearch-scripting en de documentupdate-API. Voel je vrij om de documenten of onze tutorials over het onderwerp te verkennen voor meer informatie.



Laten we erin duiken.



Controleren of document bestaat

Voordat u een veld uit een specifiek document verwijdert, is het goed om ervoor te zorgen dat het doeldocument in de index bestaat.





We kunnen de zoek-API gebruiken om het doeldocument op te halen.

Stel dat we bijvoorbeeld de kibana_sample_logs_data index hebben. We kunnen in de index zoeken naar een document dat een specifiek IP-adres bevat.



OPMERKING : Het bovenstaande voorbeeld wordt alleen ter illustratie gebruikt. U kunt verschillende methoden gebruiken om te controleren of een specifiek document beschikbaar is in de index.

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

Resulterende uitvoer:

{
'nam': 3,
'timed_out': false,
'_scherven': {
'totaal': 1,
'geslaagd': 1,
'overgeslagen': 0,
'mislukt': 0
},
'treffers': {
'totaal': {
'waarde': 17,
'relatie': 'eq'
},
'max_score': null,
'treffers': []
}

}

Vervolgens kan een eenvoudig script een doelveld uit het document verwijderen. Begin door in te loggen op uw Kibana-console en voer de opdracht uit:

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

Het bovenstaande verzoek maakt gebruik van een pijnloos contextscript om het document bij te werken en het 'ip'-veld met de opgegeven ID te verwijderen.

Uitgang:

{
'_index': 'kibana_sample_data_logs',
'_id': '5pA49IIBkTjaZ6TtsiB5',
'_versie 2,
'resultaat': 'bijgewerkt',
'_scherven': {
'totaal': 2,
'geslaagd': 2,
'mislukt': 0
},
'_seq_no': 14074,
'_primary_term': 1
}

Nadat het document is bijgewerkt, kunt u dit verifiëren door de query uit te voeren.:

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

Het bovenstaande verzoek moet de gegevens retourneren die in het document zijn opgeslagen met de opgegeven ID.

We kunnen verifiëren dat het IP-veld niet meer in het document staat.

Conclusie

In dit artikel hebt u geleerd hoe u Elasticsearch-scriptmogelijkheden kunt gebruiken om een ​​veld uit een bestaand document te verwijderen.

Bedankt voor het lezen!!