Elasticsearch Supprimer le champ

Elasticsearch Supprimer Le Champ



'Lorsque vous travaillez avec des index Elasticsearch, vous pouvez rencontrer une instance dans laquelle vous devez supprimer un champ d'un document existant. Malheureusement, Elasticsearch ne fournit pas de requête native que nous pouvons utiliser pour effectuer ladite action.

Nous pouvons cependant utiliser l'API de mise à jour de document et passer un script qui nous permet de supprimer un champ en fonction de son nom.







REMARQUE : Ce processus nécessite que vous ayez une connaissance de base des scripts Elasticsearch et de l'API de mise à jour des documents. N'hésitez pas à explorer les docs ou nos tutoriels sur le sujet pour en savoir plus.



Plongeons dedans.



Vérifier si le document existe

Avant de supprimer un champ d'un document spécifique, il est bon de s'assurer que le document cible existe dans l'index.





Nous pouvons utiliser l'API de recherche pour récupérer le document cible.

Par exemple, supposons que nous ayons l'index kibana_sample_logs_data. Nous pouvons rechercher dans l'index un document contenant une adresse IP spécifique.



REMARQUE : L'exemple ci-dessus est utilisé à des fins d'illustration uniquement. Vous pouvez utiliser diverses méthodes pour vérifier si un document spécifique est disponible dans l'index.

curl -XGET 'http://localhost:9200/kibana_sample_data_logs/_search' -H 'kbn-xsrf : rapports' -H 'Type de contenu : application/json' -d'
{
'taille': 0,
'query': {'match': {
'ip': '171.24.97.162'
}}
}'

Sortie résultante :

{
'a pris': 3,
'timed_out': faux,
'_fragments': {
'total': 1,
'réussi': 1,
'sauté': 0,
'échec': 0
},
'les coups': {
'total': {
'valeur': 17,
'relation': 'eq'
},
'max_score': nul,
'les coups': []
}

}

Ensuite, un simple script peut supprimer un champ cible du document. Commencez par vous connecter à votre console Kibana et exécutez la commande :

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

La requête ci-dessus utilise un script de contexte indolore pour mettre à jour le document et supprimer le champ 'ip' avec l'ID spécifié.

Production:

{
'_index': 'kibana_sample_data_logs',
'_id': '5pA49IIBkTjaZ6TtsiB5',
'_version 2,
'résultat': 'mis à jour',
'_fragments': {
'total': 2,
'réussi': 2,
'échec': 0
},
'_seq_no': 14074,
'_terme_primaire': 1
}

Une fois le document mis à jour, vous pouvez le vérifier en exécutant la requête :

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

La requête ci-dessus doit renvoyer les données stockées dans le document avec l'ID spécifié.

Nous pouvons vérifier que le champ IP n'est plus dans le document.

Conclusion

Dans cet article, vous avez appris à utiliser les fonctionnalités de script d'Elasticsearch pour supprimer un champ d'un document existant.

Merci d'avoir lu!!