Vous débutez avec Elasticsearch ? Participez à notre webinaire Premiers pas avec Elasticsearch. Vous pouvez aussi démarrer un essai gratuit sur le cloud ou tester Elastic dès maintenant sur votre machine.
Dans Elasticsearch, il est fréquent de devoir supprimer un champ d'un document. Cela peut s'avérer utile lorsque vous souhaitez supprimer des informations inutiles ou obsolètes de votre index. Dans cet article, nous aborderons différentes méthodes pour supprimer un champ d'un document dans Elasticsearch, avec des exemples et des instructions pas à pas.
Méthode 1 : Utilisation de l'API de mise à jour
L'API de mise à jour vous permet de mettre à jour un document en fournissant un script qui modifie la source du document. Vous pouvez utiliser cette API pour supprimer un champ d'un document en lui attribuant la valeur null. Voici un guide étape par étape sur la façon de procéder :
1. Identifiez l'index, le type de document (si vous utilisez Elasticsearch 6.x ou une version antérieure) et l'ID du document que vous souhaitez mettre à jour.
2. Utilisez l'API de mise à jour avec un script qui définit le champ comme nul ou, mieux encore, le supprime du document source. L'exemple suivant montre comment supprimer le champ "field_to_delete" d'un document dont l'ID est "1" dans l'index "my_index" :
3. Exécuter la demande. En cas de succès, Elasticsearch renvoie une réponse indiquant que le document a été mis à jour.
Note : Cette méthode ne supprime le champ que du document spécifié. Le champ existera toujours dans la cartographie et dans les autres documents de l'index.
Méthode 2 : Réindexation avec une source modifiée
Si vous souhaitez supprimer un champ de tous les documents d'un index, vous pouvez utiliser l'API Reindex pour créer un nouvel index avec la source modifiée. Voici comment procéder :
1. Créez un nouvel index avec les mêmes paramètres et mappages que l'index original. Vous pouvez utiliser l'API Get Index pour récupérer les paramètres et les mappages de l'index original.
2. Utilisez l'API Reindex pour copier les documents de l'index original vers le nouvel index, tout en supprimant le champ de la source. L'exemple suivant montre comment supprimer le champ "field_to_delete" de tous les documents de l'index "my_index" :
3. Vérifier que le nouvel index contient les documents corrects avec le champ supprimé.
4. Si tout semble correct, vous pouvez supprimer l'index original et, si nécessaire, ajouter un alias au nouvel index portant le nom de l'index original.
Méthode 3 : Mise à jour du mappage et réindexation
Si vous souhaitez supprimer un champ du mappage et de tous les documents d'un index, vous pouvez mettre à jour le mappage, puis réindexer les documents. Voici comment procéder :
1. Créez un nouvel index avec les mêmes paramètres que l'index original.
2. Récupérer les mappings de l'index original à l'aide de l'API "Get Mapping".
3. Modifiez les correspondances en supprimant le champ que vous souhaitez supprimer.
4. Appliquez les mappages modifiés au nouvel index à l'aide de l'API Put Mapping.
5. Utilisez l'API de réindexation pour copier les documents de l'index d'origine vers le nouvel index, comme décrit dans la méthode 2.
6. Vérifiez que le nouvel index contient les documents corrects avec le champ supprimé et que le champ n'est pas présent dans le mappage.
7. Si tout semble correct, vous pouvez supprimer l'index original et, si nécessaire, ajouter un alias au nouvel index portant le nom de l'index original.
Conclusion
Dans cet article, nous avons abordé trois méthodes pour supprimer un champ d'un document dans Elasticsearch : l'utilisation de l'API de mise à jour, la réindexation avec une source modifiée et la mise à jour du mappage et la réindexation. Chaque méthode a ses propres cas d'utilisation et ses propres compromis, choisissez donc celle qui répond le mieux à vos besoins. N'oubliez jamais de tester vos modifications et de vérifier les résultats avant de les appliquer aux environnements de production.




