Migre dados de um cluster Elasticsearch autogerenciado para o Alibaba Cloud Elasticsearch: crie um repositório de snapshot no OSS, faça backup dos índices e restaure os snapshots no cluster de destino.
Limitações
-
O bucket do OSS deve atender aos seguintes requisitos:
A classe de armazenamento deve ser Standard.
O bucket deve estar na mesma região do cluster do Alibaba Cloud Elasticsearch.
-
Versão do cluster: É possível migrar dados de uma versão secundária anterior para uma posterior dentro da mesma versão principal do Elasticsearch (por exemplo, de 8.15.1 para 8.17.1). Não recomendamos a migração de dados entre versões principais diferentes (por exemplo, de 7.7.1 para 8.17.1).
NotaO Alibaba Cloud Elasticsearch é totalmente compatível com o Elasticsearch open-source. No entanto, os tipos de dados podem mudar entre versões principais open-source. Por exemplo, o tipo
stringna versão 5.x foi dividido emtextekeywordna versão 6.x. A migração de dados entre versões principais pode causar erros no reconhecimento de tipos de campo.
Pré-requisitos
Crie um cluster do Alibaba Cloud Elasticsearch e um bucket do OSS. O cluster do Alibaba Cloud Elasticsearch deve ter a mesma versão principal do seu cluster autogerenciado.
Verifique se o usuário RAM possui a política de permissões
AliyunOSSFullAccess. Grant permissions to a RAM user.
Contexto
Este exemplo utiliza um índice chamado products_info para demonstrar a migração.
Execute curl -X GET "http://localhost:9200/products_info/_search?pretty". Se a resposta for semelhante à seguinte, os dados do índice estarão prontos:
Visão geral da solução

Esta solução é ideal para grandes conjuntos de dados (acima de 500 GB). Após o backup completo inicial, apenas as alterações incrementais são sincronizadas, o que reduz o tempo total de migração. Funciona bem para migração para a nuvem, atualizações entre versões e recuperação de desastres.
Migração de dados
Etapa 1: Instale o plugin elasticsearch-repository-oss
-
Conecte-se à instância ECS que hospeda seu cluster Elasticsearch autogerenciado e baixe o plugin elasticsearch-repository-oss. Este exemplo usa a versão 8.17.0.
wget https://github.com/aliyun/elasticsearch-repository-oss/releases/download/v8.17.0/elasticsearch-repository-oss-8.17.0.zipPara outras versões, consulte Other versions of the elasticsearch-repository-oss plugin.
-
Instale o plug-in no seu cluster Elasticsearch.
# Install the plug-in by unzipping it to the plugins directory of each node in your Elasticsearch installation. sudo unzip -d /usr/local/elasticsearch-8.17.0/plugins/elasticsearch-repository-oss elasticsearch-repository-oss-8.17.0.zip -
Inicie os nós do seu cluster Elasticsearch autogerenciado.
cd /usr/local/elasticsearch-8.17.0 ./bin/elasticsearch -d
Etapa 2: Crie um repositório de snapshot para o cluster autogerenciado
No servidor que hospeda seu cluster Elasticsearch autogerenciado, execute o comando a seguir para criar um repositório de snapshot:
Este comando aplica-se ao Elasticsearch 8.x. Para outras versões, consulte Manual backup and restoration.
curl -X PUT "http://localhost:9200/_snapshot/<yourBackupName>" -H 'Content-Type: application/json' -d'
{
"type": "oss",
"settings": {
"oss.client.endpoint": "oss-cn-shanghai.aliyuncs.com",
"oss.client.access_key_id": "xxxx",
"oss.client.secret_access_key": "xxxx",
"oss.client.bucket": "<yourBucketName>",
"oss.client.base_path":"snapshot/",
"oss.client.compress": true
}
}
'
|
Parâmetro |
Descrição |
|
<yourBackupName> |
Nome personalizado para o repositório. |
|
type |
Tipo do repositório. Defina como oss. |
|
oss.client.endpoint |
Endpoint do bucket do OSS. Regions and endpoints. Nota
Se a instância ECS do seu cluster Elasticsearch autogerenciado estiver na mesma região do bucket do OSS, use o endpoint interno. Caso contrário, utilize o endpoint público. |
|
oss.client.access_key_id |
AccessKey ID da conta usada para criar o bucket do OSS. Obtain an AccessKey pair. |
|
oss.client.secret_access_key |
AccessKey Secret da conta usada para criar o bucket do OSS. Obtain an AccessKey pair. |
|
oss.client.bucket |
Nome do bucket do OSS. |
|
oss.client.base_path |
Caminho de armazenamento para os snapshots. |
|
oss.client.compress |
Define se a compactação deve ser ativada:
|
Uma criação bem-sucedida retorna a resposta {"acknowledged": true}.
Etapa 3: Crie um snapshot do índice
No seu cluster Elasticsearch autogerenciado, crie um snapshot chamado snapshot_1 para fazer backup do índice products_info.
curl -X PUT localhost:9200/_snapshot/<yourBackupName>/snapshot_1?pretty -H "Content-Type: application/json" -d'
{
"indices": "products_info"
}'
<yourBackupName> é o nome do repositório especificado durante a criação do repositório de snapshot.
Uma criação bem-sucedida retorna a resposta {"accepted": true}.
Execute curl -X GET localhost:9200/_snapshot/<yourBackupName>/snapshot_1/_status para verificar o progresso. Quando state for SUCCESS, o snapshot estará concluído.
Etapa 4: Crie um repositório no Alibaba Cloud Elasticsearch
No seu cluster do Alibaba Cloud Elasticsearch, log on to the Kibana console. No painel de navegação à esquerda, clique em
e escolha .
No Shell, crie um repositório com as mesmas configurações usadas no seu cluster autogerenciado:
PUT _snapshot/<yourBackupName>/
{
"type": "oss",
"settings": {
"endpoint": "oss-cn-shanghai.aliyuncs.com",
"access_key_id": "xxxx",
"secret_access_key": "xxxxxx",
"bucket": "<yourBucketName>",
"compress": true,
"chunk_size": "500mb",
"base_path": "snapshot/"
}
}
Os valores de <yourBackupName>, <yourBucketName> e <base_path> devem corresponder aos usados no repositório de snapshot do seu cluster Elasticsearch autogerenciado.
Etapa 5: Restaure o snapshot no Alibaba Cloud Elasticsearch
No console do Kibana, restaure o snapshot_1 no cluster. Isso restaura todos os índices, exceto os de monitoramento e auditoria de segurança, e ignora índices indisponíveis.
POST _snapshot/<yourBackupName>/snapshot_1/_restore
{"indices":"*,-.monitoring*,-.security_audit*","ignore_unavailable":"true"}
Uma solicitação bem-sucedida retorna a resposta {"accepted": true}.
Execute GET products_info/_recovery para verificar o progresso da restauração. Quando stage for DONE, o índice terá sido restaurado.
Nas versões 7,10.x e 7,17.x do Elasticsearch, defina cluster.restore.ignore_revision.enable como true para permitir a restauração de snapshots com um número de revisão superior. O número de revisão é a terceira parte da versão (por exemplo, 1 em 7.10.1).
Exemplo: Após definir cluster.restore.ignore_revision.enable como true em um cluster 7.10.0, você pode restaurar snapshots da versão 7.10.2:
PUT _cluster/settings
{
"persistent": {
"cluster.restore.ignore_revision.enable": true
}
}
Etapa 6: Verifique os resultados
No console do Kibana, execute os comandos a seguir para confirmar que os dados foram restaurados:
-
Visualize os índices restaurados:
GET /_cat/indices?v -
Consulte os dados no índice restaurado:
GET /products_info/_searchResultado esperado:
{ "took": 3, "timed_out": false, "_shards": { "total": 1, "successful": 1, "skipped": 0, "failed": 0 }, "hits": { "total": { "value": 6, "relation": "eq" }, "max_score": 1, "hits": [ { "_index": "products_info", "_id": "1", "_score": 1, "_source": { "productName": "Financial Product A", "annual_rate": "3.2200%", "describe": "180-day fixed-term investment, 20.000 minimum, stable returns, optional message notifications." } }, { "_index": "products_info", "_id": "2", "_score": 1, "_source": { "productName": "Financial Product B", "annual_rate": "3.1100%", "describe": "90-day investment product, 10.000 minimum, daily return notifications." } }, { "_index": "products_info", "_id": "3", "_score": 1, "_source": { "productName": "Financial Product C", "annual_rate": "3.3500%", "describe": "270-day investment product, 40.000 minimum, instant daily return notifications." } }, { "_index": "products_info", "_id": "4", "_score": 1, "_source": { "productName": "Financial Product D", "annual_rate": "3.1200%", "describe": "90-day investment product, 12.000 minimum, daily return notifications." } }, { "_index": "products_info", "_id": "5", "_score": 1, "_source": { "productName": "Financial Product E", "annual_rate": "3.0100%", "describe": "Recommended 30-day investment product, 8.000 minimum, daily return notifications." } }, { "_index": "products_info", "_id": "6", "_score": 1, "_source": { "productName": "Financial Product F", "annual_rate": "2.7500%", "describe": "Popular short-term product, 3-day term, no fees, 500 minimum, get return notifications via SMS." } } ] } }
Perguntas frequentes
Outras versões do plugin elasticsearch-repository-oss
Baixe o plugin no GitHub. Se a sua versão exata não estiver disponível, baixe uma versão secundária similar dentro da mesma versão principal, atualize os valores em plugin-descriptor.properties, reempacote o plugin e instale-o.
version=Versão necessária do plug-in
-
elasticsearch.version=Versão do seu cluster Elasticsearch autogerenciado
NotaA versão do plug-in deve corresponder à versão do seu cluster Elasticsearch autogerenciado.
-
java.version=1.8
NotaDiferentes versões do Elasticsearch exigem diferentes versões do JDK. Para mais informações, consulte os requisitos oficiais do Elasticsearch e do plugin.
Versões distintas do Elasticsearch open-source possuem métodos de compilação diferentes. Compile o plugin elasticsearch-repository-oss para corresponder à sua versão. Por exemplo, um cluster autogerenciado 7.6.2 requer JDK 1.8 ou superior. O plugin correspondente é o elasticsearch-repository-oss-7.6.2.