Migrazione degli indici di Amazon OpenSearch Service tramite reindicizzazione remota - Amazon OpenSearch Service

Migrazione degli indici di Amazon OpenSearch Service tramite reindicizzazione remota

La reindicizzazione remota consente di copiare gli indici da un cluster Amazon OpenSearch Service a un altro. È possibile eseguire la migrazione degli indici da qualsiasi dominio di OpenSearch Service o da cluster OpenSearch ed Elasticsearch autogestiti.

La reindicizzazione remota richiede OpenSearch 1.0 o versione successiva, oppure Elasticsearch 6.7 o versione successiva, nel dominio di destinazione. Il dominio di origine deve essere inferiore o alla stessa versione principale del dominio di destinazione. Le versioni di Elasticsearch sono considerate inferiori rispetto alle versioni OpenSearch, il che significa che è possibile reindicizzare i dati dai domini Elasticsearch ai domini OpenSearch. All'interno della stessa versione principale, il dominio di origine può essere qualsiasi versione secondaria. Ad esempio, la reindicizzazione remota da Elasticsearch 7.10.x a 7.9 è supportata, ma da OpenSearch 1.0 a Elasticsearch 7.10.x non lo è.

La documentazione completa per l'operazione di reindex, inclusi i passaggi dettagliati e le opzioni supportate, è disponibile nella documentazione OpenSearch.

Prerequisiti

La reindicizzazione remota ha i seguenti requisiti:

  • Il dominio di origine deve essere accessibile dal dominio di destinazione. Per un dominio di origine che si trova all'interno di un VPC, il dominio di destinazione deve avere accesso al VPC. Questo processo varia in base alla configurazione di rete, ma generalmente prevede la connessione a una rete VPN o gestita o l'uso di un server proxy. Per ulteriori informazioni, consultare Avvio dei domini Amazon OpenSearch Service all'interno di un VPC.

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

  • Prima di avviare il processo di reindicizzazione, è preferibile creare un indice con l'impostazione desiderata sul dominio di destinazione.

Reindicizzazione dei dati tra domini OpenSearch Service

Lo scenario più semplice è che l'indice di origine si trova nella stessa Regione AWS del dominio di destinazione con un endpoint accessibile pubblicamente e sono disponibili credenziali IAM firmate.

Dal dominio di destinazione, specificare l'indice di origine da cui reindicizzare e l'indice di destinazione su cui reindicizzare:

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

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

Per verificare che l'indice sia copiato nel dominio di destinazione, inviare questa richiesta al dominio di destinazione:

GET target_index/_search

Se l'indice di origine si trova in una regione diversa da quella del dominio di destinazione, passarne il nome, come in questa richiesta di esempio:

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

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

Se il dominio di origine è protetto con autorizzazione di base, specificare il nome utente e la password:

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

Se il dominio di origine è ospitato all'interno di un VPC e non dispone di connettività a livello di VPC, configurare un proxy con un endpoint accessibile pubblicamente. 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.

Reindicizzazione dei dati tra domini OpenSearch Service in un VPC

Ogni dominio OpenSearch Service è costituito dalla propria infrastruttura VPC interna. Quando si crea un nuovo dominio OpenSearch Service in un Virtual Private Cloud (VPC) esistente, viene creata una interfaccia di rete elastica (ENI) per ciascun nodo di dati nel VPC di OpenSearch Service. Poiché l'operazione di reindicizzazione dell'origine viene eseguita dal dominio OpenSearch Service di destinazione e quindi all'interno del proprio VPC privato, non si accede al VPC del dominio OpenSearch Service di origine. Invece, è necessario un proxy inverso accessibile pubblicamente.

Per utilizzare la reindicizzazione remota tra due domini VPC, anche se i domini si trovano all'interno dello stesso VPC, è necessario un proxy. Creare un proxy con un endpoint accessibile pubblicamente davanti al cluster di origine e passare l'endpoint proxy nel corpo di reindicizzazione. 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.

Reindicizzare i dati tra domini OpenSearch Service in un VPC

  1. Creare un utente IAM a cui è stato concesso l'accesso al dominio OpenSearch Service locale e remoto. Di seguito è riportato un esempio di policy di accesso:

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::123456789012:user/test-user" }, "Action": "es:*", "Resource": "arn:aws:es:us-east-1:123456789012:domain/test-domain/my-index/*" } ] }
  2. Impostare un'istanza EC2 con un proxy inverso NGINX per l'endpoint VPC OpenSearch Service remoto. L'istanza EC2 deve trovarsi all'interno dello stesso VPC del dominio OpenSearch Service. Poiché stai firmando le tue richieste, assicurati che la configurazione NGINX contenga i seguenti parametri:

    proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr;
  3. Inviare la richiesta _reindex e firmarla con le credenziali IAM utilizzando la Versione di firma 4. Inviare la richiesta da un computer nello stesso VPC del dominio OpenSearch Service (un'istanza EC2 in esecuzione o una macchina locale collegata tramite una VPN). Imposta il parametro external su true. Per il dominio di origine, specificare l'URL accessibile esternamente per il proxy inverso NGINX.

Reindicizzazione dei dati tra domini non OpenSearch Service

Se l'indice di origine si trova al di fuori di OpenSearch Service, come in un'istanza EC2 autogestita, impostare il parametro external a true:

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

In questo caso, è supportata solo l'autorizzazione di base con nome utente e password. Il dominio di origine deve avere 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 di origine 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://source-domain-endpoint:443", "socket_timeout": "60m" }, "size": 100, "index": "source_index" }, "dest": { "index": "target_index" } }

Si consiglia inoltre di aggiungere le seguenti impostazioni all'indice di destinazione per migliorare le prestazioni:

PUT target_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, inviare questa richiesta al dominio di destinazione:

POST _reindex { "source": { "remote": { "host": "https://source-domain-endpoint:443" }, "index": "remote_index", "query": { "match": { "field_name": "text" } } }, "dest": { "index": "target_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 standard di reindicizzazione, OpenSearch Service supporta le seguenti opzioni:

Opzioni Valori validi Descrizione Obbligatorio
external Boolean Se il dominio di origine non è un dominio OpenSearch Service o se si sta eseguendo la reindicizzazione tra due domini VPC, specificare il parametro come true. No
Regione Stringa Se il dominio di origine si trova in una regione differente, specificare il nome della regione. No