Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.
Gestion des modifications importantes apportées à votre index
OpenSearch peut ajouter dynamiquement de nouveaux attributs à votre index. Cependant, une fois que votre modèle de mappage a été défini pour une clé donnée, vous devez prendre des mesures supplémentaires pour le modifier. En outre, si votre modification vous oblige à retraiter toutes les données de votre table DynamoDB, vous devrez prendre des mesures pour lancer une nouvelle exportation.
Note
Dans toutes ces options, vous pouvez toujours rencontrer des problèmes si votre table DynamoDB présente des conflits de type avec le modèle de mappage que vous avez spécifié. Assurez-vous qu'une file d'attente contenant des lettres mortes (DLQ) est activée (même en cours de développement). Cela permet de mieux comprendre ce qui peut ne pas fonctionner avec l'enregistrement à l'origine d'un conflit lorsqu'il est indexé dans votre index sur OpenSearch.
Rubriques
- Fonctionnement
- Supprimez votre index et réinitialisez le pipeline (option centrée sur le pipeline)
- Recréez votre index et réinitialisez le pipeline (option centrée sur l'indice)
- Créer un nouvel index et un nouveau récepteur (option en ligne)
- Meilleures pratiques pour éviter et résoudre les conflits de type
Fonctionnement
Voici un bref aperçu des mesures prises lors de la gestion des modifications importantes apportées à votre index. Consultez les step-by-step procédures dans les sections qui suivent.
-
Arrêter et démarrer le pipeline : cette option réinitialise l'état du pipeline, qui redémarrera avec une nouvelle exportation complète. Il n'est pas destructif et ne supprime donc pas votre index ni aucune donnée dans DynamoDB. Si vous ne créez pas un nouvel index avant cela, vous risquez de rencontrer un grand nombre d'erreurs dues à des conflits de versions, car l'exportation tente d'insérer des documents plus anciens que le document actuel
_version
dans l'index. Vous pouvez ignorer ces erreurs en toute sécurité. Le pipeline ne vous sera pas facturé tant qu'il est arrêté. -
Mettre à jour le pipeline : cette option met à jour la configuration du pipeline selon une approche bleu/vert, sans perdre d'état. Si vous apportez des modifications importantes à votre pipeline (par exemple en ajoutant de nouvelles routes, de nouveaux index ou de nouvelles clés à des index existants), vous devrez peut-être effectuer une réinitialisation complète du pipeline et recréer votre index. Cette option n'effectue pas d'exportation complète.
-
Supprimer et recréer l'index : cette option supprime vos données et les paramètres de mappage de votre index. Vous devez le faire avant d'apporter des modifications importantes à vos mappages. Cela interrompra toutes les applications qui s'appuient sur l'index jusqu'à ce que celui-ci soit recréé et synchronisé. La suppression de l'index ne lance pas une nouvelle exportation. Vous ne devez supprimer votre index qu'après avoir mis à jour votre pipeline. Dans le cas contraire, il se peut que votre index soit recréé avant que vous ne mettiez à jour vos paramètres.
Supprimez votre index et réinitialisez le pipeline (option centrée sur le pipeline)
Cette méthode est souvent l'option la plus rapide si vous êtes encore en phase de développement. Vous allez supprimer votre index dans OpenSearch Service, puis arrêter et démarrer votre pipeline pour lancer une nouvelle exportation de toutes vos données. Cela garantit qu'aucun modèle de mappage n'entre en conflit avec les index existants et qu'aucune perte de données n'est due à une table traitée incomplète.
-
Arrêtez le pipeline soit par le biais de AWS Management Console, soit en utilisant l'StopPipelineAPIopération avec le AWS CLI ou unSDK.
-
Mettez à jour la configuration de votre pipeline avec vos nouvelles modifications.
-
Supprimez votre index dans OpenSearch Service, via un
REST
API appel ou via votre OpenSearch tableau de bord. -
Démarrez le pipeline via la console ou en utilisant l'
StartPipeline
APIopération avec le AWS CLI ou unSDK.Note
Cela déclenche une nouvelle exportation complète, qui entraînera des coûts supplémentaires.
-
Surveillez tout problème imprévu, car une nouvelle exportation est générée pour créer le nouvel index.
-
Vérifiez que l'indice correspond à vos attentes en matière OpenSearch de service.
Une fois l'exportation terminée et la lecture à partir du flux reprise, les données de votre table DynamoDB seront désormais disponibles dans l'index.
Recréez votre index et réinitialisez le pipeline (option centrée sur l'indice)
Cette méthode fonctionne bien si vous devez effectuer de nombreuses itérations sur la conception de l'index dans OpenSearch Service avant de reprendre le pipeline depuis DynamoDB. Cela peut être utile pour le développement lorsque vous souhaitez itérer très rapidement sur vos modèles de recherche et éviter d'attendre que de nouvelles exportations soient effectuées entre chaque itération.
-
Arrêtez le pipeline soit via le AWS Management Console, soit en appelant l'StopPipelineAPIopération avec le AWS CLI ou unSDK.
-
Supprimez et recréez votre index OpenSearch avec le modèle de mappage que vous souhaitez utiliser. Vous pouvez insérer manuellement des exemples de données pour confirmer que vos recherches fonctionnent comme prévu. Si vos exemples de données sont susceptibles d'entrer en conflit avec des données provenant de DynamoDB, veillez à les supprimer avant de passer à l'étape suivante.
-
Si vous avez un modèle d'indexation dans votre pipeline, supprimez-le ou remplacez-le par celui que vous avez déjà créé dans OpenSearch Service. Assurez-vous que le nom de votre index correspond au nom indiqué dans le pipeline.
-
Démarrez le pipeline via la console ou en appelant l'
StartPipeline
APIopération avec le AWS CLI ou unSDK.Note
Cela lancera une nouvelle exportation complète, ce qui entraînera des coûts supplémentaires.
-
Surveillez tout problème imprévu, car une nouvelle exportation est générée pour créer le nouvel index.
Une fois que l'exportation est terminée et que la lecture du flux reprend, les données de votre table DynamoDB devraient désormais être disponibles dans l'index.
Créer un nouvel index et un nouveau récepteur (option en ligne)
Cette méthode fonctionne bien si vous devez mettre à jour votre modèle de mappage alors que vous utilisez actuellement votre index en production. Cela crée un tout nouvel index, vers lequel vous devrez déplacer votre application une fois celle-ci synchronisée et validée.
Note
Cela créera un autre consommateur sur le stream. Cela peut être un problème si vous avez également d'autres consommateurs comme AWS Lambda ou des tables globales. Vous devrez peut-être suspendre les mises à jour de votre pipeline existant pour créer la capacité de charger le nouvel index.
-
Créez un nouveau pipeline avec de nouveaux paramètres et un nom d'index différent.
-
Surveillez le nouvel index pour détecter tout problème imprévu.
-
Passez l'application au nouvel index.
-
Arrêtez et supprimez l'ancien pipeline après avoir vérifié que tout fonctionne correctement.
Meilleures pratiques pour éviter et résoudre les conflits de type
-
Utilisez toujours une file d'attente en lettres mortes (DLQ) pour faciliter le débogage en cas de conflit de type.
-
Utilisez toujours un modèle d'index avec des mappages et des ensembles
include_keys
. Bien que le OpenSearch service mappe de manière dynamique les nouvelles clés, cela peut entraîner des problèmes liés à des comportements inattendus (comme s'attendre à ce que quelque chose soit unGeoPoint
, mais qu'il est créé sous la forme d'unstring
ouobject
) ou à des erreurs (comme lenumber
fait d'avoir un mélange defloat
valeurslong
et de valeurs). -
Si vous devez continuer à utiliser votre index existant en production, vous pouvez également remplacer l'une des étapes de suppression d'index précédentes en renommant simplement votre index dans le fichier de configuration de votre pipeline. Cela crée un tout nouvel indice. Votre application devra ensuite être mise à jour pour pointer vers le nouvel index une fois qu'elle sera terminée.
-
Si vous rencontrez un problème de conversion de type que vous corrigez avec un processeur, vous pouvez le tester avec
UpdatePipeline
. Pour ce faire, vous devez arrêter et démarrer ou traiter vos files d'attente de lettres mortesafin de corriger les documents précédemment ignorés qui contenaient des erreurs.