Migrazione degli indici di Amazon OpenSearch Service utilizzando la reindicizzazione remota - OpenSearch Servizio Amazon

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Migrazione degli indici di Amazon OpenSearch Service utilizzando la reindicizzazione remota

La reindicizzazione remota consente di copiare gli indici da un dominio Amazon OpenSearch Service a un altro. Puoi migrare gli indici da qualsiasi dominio di OpenSearch servizio o da cluster autogestiti ed Elasticsearch. OpenSearch

Un dominio e un indice remoti si riferiscono alla fonte dei dati o al dominio e all'indice da cui si desidera copiare i dati. Un dominio e un indice locali si riferiscono alla destinazione dei dati o al dominio e all'indice in cui si desidera copiare i dati.

La reindicizzazione remota richiede OpenSearch 1.0 o versione successiva oppure Elasticsearch 6.7 o versione successiva, sul dominio locale. Il dominio remoto deve essere precedente o avere la stessa versione principale del dominio locale. Le versioni di Elasticsearch sono considerate precedenti alle OpenSearch versioni, il che significa che puoi reindicizzare i dati dai domini Elasticsearch ai domini. OpenSearch All'interno della stessa versione principale, il dominio remoto può essere una qualsiasi versione secondaria. Ad esempio, è supportata la reindicizzazione remota da Elasticsearch 7.10.x a 7.9, ma non OpenSearch da 1.0 a Elasticsearch 7.10.x.

La documentazione completa sull'reindexoperazione, inclusi i passaggi dettagliati e le opzioni supportate, è disponibile nella documentazione. OpenSearch

Prerequisiti

La reindicizzazione remota ha i seguenti requisiti:

  • Il dominio remoto deve essere accessibile dal dominio locale. Per un dominio remoto che risiede all'interno di un VPC, il dominio locale deve avere accesso al VPC. Questo processo varia in base alla configurazione di rete, ma probabilmente implica la connessione a una rete VPN o gestita o l'utilizzo della connessione endpoint VPC nativa. Per ulteriori informazioni, vedi Avvio dei domini Amazon OpenSearch Service all'interno di un VPC.

  • La richiesta deve essere autorizzata dal dominio remoto come qualsiasi altra richiesta REST. Se il dominio remoto ha abilitato il controllo granulare degli accessi, è necessario disporre dell'autorizzazione per eseguire la reindicizzazione sul dominio remoto e leggere l'indice sul dominio locale. Per ulteriori considerazioni sulla sicurezza, consultare Controllo granulare degli accessi in Amazon Service OpenSearch .

  • Ti consigliamo di creare un indice con l'impostazione desiderata sul tuo dominio locale prima di iniziare il processo di reindicizzazione.

  • Se il dominio utilizza un tipo di istanza T2 o T3 per i nodi di dati, non è possibile utilizzare la reindicizzazione remota.

Reindicizza i dati tra i domini Internet del Servizio OpenSearch

Lo scenario più semplice è che l'indice remoto si trovi nello stesso Regione AWS dominio locale con un endpoint accessibile pubblicamente e che tu abbia firmato le credenziali IAM.

Dal dominio remoto, specifica l'indice remoto da cui reindicizzare e l'indice locale da reindicizzare su:

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

È necessario aggiungere 443 alla fine dell'endpoint del dominio remoto per un controllo di convalida.

Per verificare che l'indice venga copiato nel dominio locale, invia questa richiesta al dominio locale:

GET local_index/_search

Se l'indice remoto si trova in una regione diversa dal dominio locale, inserisci il nome della regione, ad esempio in questa richiesta di esempio:

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

Nel caso di regioni isolate come quelle cinesi AWS GovCloud (US) o regionali, l'endpoint potrebbe non essere accessibile perché l'utente IAM non è riconosciuto in tali regioni.

Se il dominio remoto è protetto con l'autenticazione di base, specifica il nome utente e la password:

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

Reindicizza i dati tra i domini OpenSearch di servizio quando il telecomando si trova in un VPC

Ogni dominio di OpenSearch servizio è costituito dalla propria infrastruttura interna di cloud privato virtuale (VPC). Quando crei un nuovo dominio in un OpenSearch Service VPC esistente, viene creata un'interfaccia di rete elastica per ogni nodo di dati nel VPC.

Poiché l'operazione di reindicizzazione remota viene eseguita dal dominio del OpenSearch servizio remoto e quindi all'interno del relativo VPC privato, è necessario un modo per accedere al VPC del dominio locale. È possibile farlo utilizzando la funzionalità di connessione endpoint VPC integrata per stabilire una connessione o configurando un proxy. AWS PrivateLink

Se il tuo dominio locale utilizza OpenSearch la versione 1.0 o successiva, puoi utilizzare la console o la AWS CLI per creare una connessione. AWS PrivateLink Una AWS PrivateLink connessione consente alle risorse del VPC locale di connettersi privatamente alle risorse nel VPC remoto all'interno dello stesso. Regione AWS

Puoi utilizzare la reindicizzazione remota con la console per copiare gli indici tra due domini che condividono una connessione endpoint VPC.

  1. Accedi alla console di Amazon OpenSearch Service all'indirizzohttps://console.aws.amazon.com/aos/.

  2. Nel riquadro di navigazione a sinistra, scegli Domains (Domini).

  3. Seleziona il dominio locale o il dominio in cui desideri copiare i dati. Si apre la pagina dei dettagli del dominio. Scegli la scheda Connessioni sotto le informazioni generali e scegli Richiedi.

  4. Nella pagina Richiedi connessione, seleziona VPC Endpoint Connection per la tua modalità di connessione e inserisci altri dettagli pertinenti. Questi dettagli includono il dominio remoto, che è il dominio da cui vuoi copiare i dati. Quindi, scegli Request (Richiesta).

  5. Vai alla pagina dei dettagli del dominio remoto, scegli la scheda Connessioni e trova la tabella Connessioni in entrata. Seleziona la casella di controllo accanto al nome del dominio da cui hai appena creato la connessione (il dominio locale). Scegli Approve (Approva).

  6. Torna al dominio locale, scegli la scheda Connections (Connessioni) e individua la tabella Outbound connections (Connessioni in uscita). Dopo che la connessione tra i due domini è attiva, un endpoint diventa disponibile nella colonna Endpoint della tabella. Copia l'endpoint.

  7. Apri il pannello di controllo per il dominio locale e scegli Dev Tools (Strumenti di sviluppo) nella barra di navigazione a sinistra. Per confermare che l'indice del dominio remoto non esiste ancora nel tuo dominio locale, esegui la seguente richiesta GET. Sostituiscilo remote-domain-index-namecon il tuo nome di indice.

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

    Nell'output, dovresti vedere un errore che indica che l'indice non è stato trovato.

  8. Sotto la tua richiesta GET, crea una richiesta POST e usa il tuo endpoint come host remoto, come riportato di seguito.

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

    Esegui questa richiesta.

  9. Esegui nuovamente la richiesta GET. L'output dovrebbe ora indicare che l'indice locale esiste. Puoi interrogare questo indice per verificare che siano OpenSearch stati copiati tutti i dati dall'indice remoto.

Puoi utilizzare la reindicizzazione remota con l'API per copiare gli indici tra due domini che condividono una connessione endpoint VPC.

  1. Utilizza l'operazione CreateOutboundConnectionAPI per richiedere una nuova connessione dal dominio locale al dominio remoto.

    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" } } }

    Riceverai un ConnectionId messaggio nella risposta. Salva questo ID per utilizzarlo nel passaggio successivo.

  2. Utilizza l'operazione AcceptInboundConnectionAPI con il tuo ID di connessione per approvare la richiesta dal dominio locale.

    PUT https://es.region.amazonaws.com/2021-01-01/opensearch/cc/inboundConnection/ConnectionId/accept
  3. Usa l'operazione DescribeOutboundConnectionsAPI per recuperare l'endpoint per il tuo dominio remoto.

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

    Salva l'endpoint di connessione da utilizzare nel passaggio 5.

  4. Per confermare che l'indice del dominio remoto non esiste ancora nel tuo dominio locale, esegui la seguente richiesta GET. Sostituiscilo remote-domain-index-namecon il tuo nome di indice.

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

    Nell'output, dovresti vedere un errore che indica che l'indice non è stato trovato.

  5. Crea una richiesta POST e usa il tuo endpoint come host remoto, come segue.

    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" } }

    Esegui questa richiesta.

  6. Esegui nuovamente la richiesta GET. L'output dovrebbe ora indicare che l'indice locale esiste. È possibile interrogare questo indice per verificare che siano OpenSearch stati copiati tutti i dati dall'indice remoto.

Se il dominio remoto è ospitato all'interno di un VPC e non desideri utilizzare la funzionalità di connessione agli endpoint VPC, devi configurare un proxy con un endpoint accessibile pubblicamente. In questo caso, OpenSearch Service richiede un endpoint pubblico perché non è in grado di inviare traffico al tuo VPC.

Quando esegui un dominio in modalità VPC, uno o più endpoint vengono inseriti nel tuo VPC. Tuttavia, questi endpoint servono solo per il traffico che entra nel dominio all'interno del VPC e non consentono il traffico verso il VPC stesso.

Il comando remote reindex viene eseguito dal dominio locale, quindi il traffico di origine non è in grado di utilizzare tali endpoint per accedere al dominio remoto. Ecco perché in questo caso d'uso è necessario un proxy. Il dominio proxy deve avere un certificato firmato di una certification authority (CA) pubblica. I certificati autofirmati o privati firmati dalla CA non sono supportati.

Reindicizza i dati tra domini non OpenSearch di servizio

Se l'indice remoto è ospitato all'esterno del OpenSearch servizio, ad esempio in un'istanza EC2 autogestita, imposta il parametro su: external true

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

In questo caso, è supportata solo l'autenticazione di base con nome utente e password. Il dominio remoto deve avere un endpoint accessibile pubblicamente (anche se si trova nello stesso VPC del dominio di servizio OpenSearch locale) e un certificato firmato da una CA pubblica. I certificati autofirmati o privati firmati dalla CA non sono supportati.

Reindicizzazione di set di dati di grandi dimensioni

La reindicizzazione remota invia una richiesta di scorrimento al dominio remoto con i seguenti valori predefiniti:

  • Contesto di ricerca di 5 minuti

  • Timeout socket di 30 secondi

  • Dimensione del batch di 1.000

Consigliamo di regolare questi parametri per adattarli ai dati. Per documenti di grandi dimensioni, considerare una dimensione batch più piccola e/o un timeout più lungo. Per ulteriori informazioni, consultare Scorri ricerca.

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" } }

Si consiglia inoltre di aggiungere le seguenti impostazioni all'indice locale per prestazioni migliori:

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

Al termine del processo di reindicizzazione, è possibile impostare il numero di repliche desiderato e rimuovere l'impostazione dell'intervallo di aggiornamento.

Per reindicizzare solo un sottoinsieme di documenti selezionati tramite una query, invia questa richiesta al dominio locale:

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

La reindicizzazione remota non supporta il partizionamento, quindi non è possibile eseguire più operazioni di scorrimento per la stessa richiesta in parallelo.

Impostazioni di reindicizzazione remota

Oltre alle opzioni di reindicizzazione standard, OpenSearch Service supporta le seguenti opzioni:

Opzioni Valori validi Descrizione Richiesto
external Booleano Se il dominio remoto non è un dominio OpenSearch di servizio o se stai reindicizzando tra due domini VPC, specifica come. true No
Regione Stringa Se il dominio remoto si trova in una regione diversa, specifica il nome della regione. No