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
API Update 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 pour y parvenir :
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 mapping 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 en ordre, vous pouvez supprimer l’index original et, si nécessaire, ajouter un alias au nouvel index avec 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.
Questions fréquentes
Qu’est-ce que l’API de mise à jour ?
Une API qui vous permet de mettre à jour un document en fournissant un script qui modifie le code source du document, par exemple en définissant un champ sur null ou en le supprimant.
Qu'est-ce que l'API Reindex ?
une API utilisée pour copier des documents d'un index d'origine vers un nouvel index de destination tout en modifiant la source (par exemple en supprimant un champ) pendant la transition.
Qu'est-ce que le mapping ?
Il s'agit de la structure définie d'un index ; pour supprimer définitivement un champ d'un index, vous devez modifier les mappings en supprimant le champ, puis en réindexant.
Quels sont les avantages de supprimer des champs dans les documents Elasticsearch ?
La suppression de champs dans les documents Elasticsearch est utile lorsque vous souhaitez supprimer des informations inutiles ou obsolètes de votre index.




