Elasticsearch supprimer le champ

Elasticsearch supprimer le champ

«Lorsque vous travaillez avec des indices Elasticarch, vous pouvez rencontrer une instance où vous devez supprimer un champ d'un document existant. Malheureusement, Elasticsearch ne fournit pas une demande native que nous pouvons utiliser pour effectuer ladite action.

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

NOTE: Ce processus vous oblige à avoir des connaissances de base des scripts Elasticsearch et de l'API de mise à jour du document. N'hésitez pas à explorer les documents ou nos tutoriels sur le sujet pour en savoir plus.

Plongeons-nous dans.

Vérifiez 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 qui contient une IP spécifique.

NOTE: 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: reportage" -h "contenu-type: application / json" -d '

"Taille": 0,
"Query": "Match":
"IP": "171.24.97.162 "

'

Sortie résultante:


"Taked": 3,
"timed_out": faux,
"_fragments":
"Total": 1,
"réussi": 1,
"sauté": 0,
"Échec": 0
,
"les coups":
"total":
"valeur": 17,
"relation": "EQ"
,
"max_score": null,
"les coups": []

Ensuite, un script simple 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: reportage" -h "contenu-type: application / json" -d '

"Script": "CTX._source.supprimer ('\ "ip' \") ""
'

La demande ci-dessus utilise un script de contexte indolore pour mettre à jour le document et supprimer le champ «IP» avec l'ID spécifié.

Sortir:


""_index"": ""kibana_sample_data_logs"",
""_id"": ""5pa49iibktjaz6ttsib5"",
""_version 2,
""Résultat"": ""mis à jour"",
""_fragments"":
""Total"": 2,
""réussi"": 2,
""Échec"": 0
,
""_seq_no"": 14074,
""_primary_term"": 1

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

curl -xget ""http: // localhost: 9200 / kibana_sample_data_logs / _doc / 5pa49iibktjaz6ttsib5"" -h ""kbn-xsrf: reportage""

La demande 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 capacités de script Elasticsearch pour supprimer un champ d'un document existant.

Merci d'avoir lu!!

"