Migration des index Amazon OpenSearch Service à l'aide de la réindexation à distance - Amazon OpenSearch Service

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.

Migration des index Amazon OpenSearch Service à l'aide de la réindexation à distance

La réindexation à distance vous permet de copier des index d'un domaine Amazon OpenSearch Service vers un autre. Vous pouvez migrer des index depuis n'importe quel domaine de OpenSearch service ou depuis des clusters autogérés OpenSearch ou Elasticsearch.

Un domaine et un index distants font référence à la source des données, ou au domaine et à l'index à partir desquels vous souhaitez copier les données. Un domaine et un index locaux font référence à la cible des données, ou au domaine et à l'index vers lesquels vous souhaitez copier les données.

La réindexation à distance nécessite la OpenSearch version 1.0 ou ultérieure, ou Elasticsearch 6.7 ou version ultérieure, sur le domaine local. Le domaine distant doit présenter une version inférieure ou la même version majeure que le domaine local. Les versions d'Elasticsearch sont considérées comme inférieures aux OpenSearch versions, ce qui signifie que vous pouvez réindexer les données des domaines Elasticsearch vers des domaines. OpenSearch Dans la même version majeure, le domaine distant peut correspondre à n'importe quelle version mineure. Par exemple, la réindexation à distance d'Elasticsearch 7.10.x vers 7.9 est prise en charge, mais pas de la version OpenSearch 1.0 vers Elasticsearch 7.10.x.

Note

Cette documentation explique comment réindexer les données entre les domaines Amazon OpenSearch Service. Pour une documentation complète de l'reindexopération, y compris les étapes détaillées et les options prises en charge, voir le document Reindex dans la OpenSearch documentation.

Prérequis

La réindexation à distance présente les exigences suivantes :

  • Le domaine distant doit être accessible à partir du domaine local. Pour un domaine distant résidant au sein d'un VPC, le domaine local doit avoir accès au VPC. Ce processus varie en fonction de la configuration du réseau, mais implique probablement la connexion à un VPN ou à un réseau géré, ou l'utilisation de la connexion de point de terminaison VPC native. Pour en savoir plus, veuillez consulter la section Lancer vos domaines Amazon OpenSearch Service au sein d'un VPC.

  • La demande doit être autorisée par le domaine distant comme toute autre demande REST. Si le contrôle d'accès détaillé est activé dans le domaine distant, vous devez être autorisé à effectuer une réindexation sur le domaine distant et à lire l'index sur le domaine local. Pour obtenir plus d’informations de sécurité, consultez Contrôle d'accès précis dans Amazon Service OpenSearch .

  • Nous vous recommandons de créer un index avec le paramètre souhaité sur votre domaine local avant de lancer le processus de réindexation.

  • Si votre domaine utilise un type d'instance T2 ou T3 pour vos nœuds de données, vous ne pouvez pas utiliser la réindexation à distance.

Réindexer les données entre les domaines Internet OpenSearch du service

Le scénario le plus simple est que l'index distant se trouve dans le même Région AWS que votre domaine local avec un point de terminaison accessible au public et que vous avez signé des informations d'identification IAM.

Dans le domaine distant, spécifiez l'index distant à partir duquel vous souhaitez réindexer et l'index local à réindexer :

POST _reindex { "source": { "remote": { "host": "https://remote-domain-endpoint:443" }, "index": "remote_index" }, "dest": { "index": "local_index" } }

Vous devez ajouter 443 à la fin du point de terminaison du domaine distant à des fins de vérification de validation.

Pour vérifier que l'index est copié sur le domaine local, envoyez cette demande au domaine local :

GET local_index/_search

Si l'index distant se trouve dans une région différente de votre domaine local, transmettez son nom de région, comme dans cet exemple de demande :

POST _reindex { "source": { "remote": { "host": "https://remote-domain-endpoint:443", "region": "eu-west-1" }, "index": "remote_index" }, "dest": { "index": "local_index" } }

Dans le cas d'une région isolée telle que AWS GovCloud (US) la Chine, le point de terminaison peut ne pas être accessible car votre utilisateur IAM n'est pas reconnu dans ces régions.

Si le domaine distant est sécurisé par une authentification de base, spécifiez le nom d'utilisateur et le mot de passe :

POST _reindex { "source": { "remote": { "host": "https://remote-domain-endpoint:443", "username": "username", "password": "password" }, "index": "remote_index" }, "dest": { "index": "local_index" } }

Réindexer les données entre les domaines OpenSearch de service lorsque la télécommande se trouve dans un VPC

Chaque domaine OpenSearch de service est constitué de sa propre infrastructure interne de cloud privé virtuel (VPC). Lorsque vous créez un nouveau domaine dans un OpenSearch Service VPC existant, une interface Elastic Network est créée pour chaque nœud de données du VPC.

Comme l'opération de réindexation à distance est effectuée à partir du domaine de OpenSearch service distant, et donc au sein de son propre VPC privé, vous devez disposer d'un moyen d'accéder au VPC du domaine local. Vous pouvez le faire soit en utilisant la fonctionnalité intégrée de connexion des points de terminaison VPC pour établir une connexion AWS PrivateLink, soit en configurant un proxy.

Si votre domaine local utilise OpenSearch la version 1.0 ou ultérieure, vous pouvez utiliser la console ou le AWS CLI pour créer une AWS PrivateLink connexion. Une AWS PrivateLink connexion permet aux ressources du VPC local de se connecter de manière privée aux ressources du VPC distant au sein de celui-ci. Région AWS

Vous pouvez utiliser la réindexation à distance avec la console pour copier des index entre deux domaines partageant une connexion de point de terminaison VPC.

  1. Accédez à la console Amazon OpenSearch Service à l'adressehttps://console.aws.amazon.com/aos/.

  2. Dans le volet de navigation de gauche, choisissez Domains (Domaines).

  3. Sélectionnez le domaine local ou le domaine dans lequel vous souhaitez copier les données. Cette action ouvre la page des détails du domaine. Cliquez sur l'onglet Connexions sous les informations générales, puis sélectionnez Demander.

  4. Sur la page Demander une connexion, sélectionnez VPC Endpoint Connection pour votre mode de connexion et entrez les autres informations pertinentes. Ces détails incluent le domaine distant, qui est le domaine à partir duquel vous souhaitez copier des données. Choisissez ensuite Request (Demander).

  5. Accédez à la page de détails du domaine distant, choisissez l'onglet Connexions et recherchez le tableau des connexions entrantes. Sélectionnez la case à cocher située à côté du nom du domaine à partir duquel vous venez de créer la connexion (le domaine local). Choisissez Approve (Approuver).

  6. Revenez au domaine local, choisissez l'onglet Connections (Connexions) et recherchez le tableau des connexions sortantes. Une fois la connexion entre les deux domaines active, un point de terminaison devient disponible dans la colonne Endpoint (Point de terminaison) du tableau. Copiez le point de terminaison.

  7. Ouvrez le tableau de bord du domaine local et sélectionnez Dev Tools (Outils du développeur) dans le menu de navigation de gauche. Pour vérifier que l'index de domaine distant n'existe pas encore sur votre domaine local, exécutez la requête GET suivante. remote-domain-index-nameRemplacez-le par votre propre nom d'index.

    GET remote-domain-index-name/_search { "query":{ "match_all":{} } }

    Dans le résultat, vous devriez voir une erreur indiquant que l'index n'a pas été trouvé.

  8. Sous votre demande GET, créez une demande POST et utilisez votre point de terminaison comme hôte distant, comme suit.

    POST _reindex { "source":{ "remote":{ "host":"connection-endpoint", "username":"username", "password":"password" }, "index":"remote-domain-index-name" }, "dest":{ "index":"local-domain-index-name" } }

    Exécutez cette demande.

  9. Exécutez à nouveau la demande GET. La sortie devrait maintenant indiquer que l'index local existe. Vous pouvez interroger cet index pour vérifier que toutes les données de l'index distant ont OpenSearch été copiées.

Vous pouvez utiliser la réindexation à distance avec l'API pour copier des index entre deux domaines partageant une connexion de point de terminaison VPC.

  1. Utilisez l'opération CreateOutboundConnectionAPI pour demander une nouvelle connexion entre votre domaine local et votre domaine distant.

    POST https://es.region.amazonaws.com/2021-01-01/opensearch/cc/outboundConnection { "ConnectionAlias": "remote-reindex-example", "ConnectionMode": "VPC_ENDPOINT", "LocalDomainInfo": { "AWSDomainInformation": { "DomainName": "local-domain-name", "OwnerId": "aws-account-id", "Region": "region" } }, "RemoteDomainInfo": { "AWSDomainInformation": { "DomainName": "remote-domain-name", "OwnerId": "aws-account-id", "Region": "region" } } }

    Vous recevez un ConnectionId dans la réponse. Enregistrez cet identifiant pour l'utiliser à l'étape suivante.

  2. Utilisez l'opération AcceptInboundConnectionAPI avec votre identifiant de connexion pour approuver la demande provenant du domaine local.

    PUT https://es.region.amazonaws.com/2021-01-01/opensearch/cc/inboundConnection/ConnectionId/accept
  3. Utilisez l'opération DescribeOutboundConnectionsAPI pour récupérer le point de terminaison de votre domaine distant.

    { "Connections": [ { "ConnectionAlias": "remote-reindex-example", "ConnectionId": "connection-id", "ConnectionMode": "VPC_ENDPOINT", "ConnectionProperties": { "Endpoint": "connection-endpoint" }, ... } ] }

    Enregistrez le point de terminaison de connexion à utiliser à l'étape 5.

  4. Pour vérifier que l'index de domaine distant n'existe pas encore sur votre domaine local, exécutez la requête GET suivante. remote-domain-index-nameRemplacez-le par votre propre nom d'index.

    GET local-domain-endpoint/remote-domain-index-name/_search { "query":{ "match_all":{} } }

    Dans le résultat, vous devriez voir une erreur indiquant que l'index n'a pas été trouvé.

  5. Créez une requête POST et utilisez votre point de terminaison comme hôte distant, comme suit.

    POST local-domain-endpoint/_reindex { "source":{ "remote":{ "host":"connection-endpoint", "username":"username", "password":"password" }, "index":"remote-domain-index-name" }, "dest":{ "index":"local-domain-index-name" } }

    Exécutez cette demande.

  6. Exécutez à nouveau la demande GET. La sortie devrait maintenant indiquer que l'index local existe. Vous pouvez interroger cet index pour vérifier que toutes les données de l'index distant ont OpenSearch été copiées.

Si le domaine distant est hébergé dans un VPC et que vous ne souhaitez pas utiliser la fonctionnalité de connexion du point de terminaison du VPC, vous devez configurer un proxy avec un point de terminaison accessible au public. Dans ce cas, le OpenSearch service nécessite un point de terminaison public car il n'est pas en mesure d'envoyer du trafic vers votre VPC.

Lorsque vous exécutez un domaine en mode VPC, un ou plusieurs points de terminaison sont placés dans votre VPC. Toutefois, ces points de terminaison ne sont destinés qu'au trafic entrant dans le domaine au sein du VPC, et ils n'autorisent pas le trafic à entrer dans le VPC lui-même.

La commande de réindexation à distance est exécutée depuis le domaine local, de sorte que le trafic d'origine ne peut pas utiliser ces points de terminaison pour accéder au domaine distant. C'est pourquoi un proxy est requis dans ce cas d'utilisation. Le domaine proxy doit disposer d'un certificat signé par une autorité de certification publique (CA). Les certificats auto-signés ou signés par une autorité de certification privée ne sont pas pris en charge.

Réindexer les données entre les domaines non liés OpenSearch aux services

Si l'index distant est hébergé en dehors de OpenSearch Service, par exemple dans une instance EC2 autogérée, définissez le external paramètre sur : true

POST _reindex { "source": { "remote": { "host": "https://remote-domain-endpoint:443", "username": "username", "password": "password", "external": true }, "index": "remote_index" }, "dest": { "index": "local_index" } }

Dans ce cas, seule l'authentification de base à l'aide d'un nom d'utilisateur et d'un mot de passe est prise en charge. Le domaine distant doit disposer d'un point de terminaison accessible au public (même s'il se trouve dans le même VPC que le domaine de OpenSearch service local) et d'un certificat signé par une autorité de certification publique. Les certificats autosignés ou signés par une autorité de certification privée ne sont pas pris en charge.

Réindexer des jeux de données volumineux

La réindexation à distance envoie une demande de défilement au domaine distant avec les valeurs par défaut suivantes :

  • Contexte de recherche de 5 minutes

  • Délai d'attente de socket de 30 secondes

  • Taille de lot de 1 000

Nous vous recommandons de régler ces paramètres en fonction de vos données. Pour les documents volumineux, envisagez une taille de lot plus petite et/ou un délai d'attente plus long. Pour plus d'informations, consultez Recherche avec défilement.

POST _reindex?pretty=true&scroll=10h&wait_for_completion=false { "source": { "remote": { "host": "https://remote-domain-endpoint:443", "socket_timeout": "60m" }, "size": 100, "index": "remote_index" }, "dest": { "index": "local_index" } }

Nous vous recommandons également d'ajouter les paramètres suivants à l'index local pour de meilleures performances :

PUT local_index { "settings": { "refresh_interval": -1, "number_of_replicas": 0 } }

Une fois le processus de réindexation terminé, vous pouvez définir le nombre de réplicas souhaité et supprimer le paramètre d'intervalle d'actualisation.

Pour réindexer uniquement un sous-ensemble de documents sélectionnés par le biais d'une requête, envoyez cette demande au domaine local :

POST _reindex { "source": { "remote": { "host": "https://remote-domain-endpoint:443" }, "index": "remote_index", "query": { "match": { "field_name": "text" } } }, "dest": { "index": "local_index" } }

La réindexation à distance ne prend pas en charge le découpage et dès lors, vous ne pouvez pas effectuer plusieurs opérations de défilement pour la même demande en parallèle.

Paramètres de réindexation à distance

Outre les options de réindexation standard, OpenSearch Service prend en charge les options suivantes :

Options Valeurs valides Description Obligatoire
Externe Booléenne Si le domaine distant n'est pas un domaine de OpenSearch service ou si vous effectuez une réindexation entre deux domaines VPC, spécifiez comme. true Non
Région Chaîne Si le domaine distant se trouve dans une autre région, spécifiez le nom de la région. Non