O Elasticsearch 6.x removeu o suporte a múltiplos tipos em um único índice. Use a Reindex API para converter índices com múltiplos tipos em uma instância 5.x em índices de tipo único e, em seguida, migre os dados para uma instância 6.x por meio do Logstash.
Considerações
O Alibaba Cloud ES oferece dois modos de implantação: arquitetura de gerenciamento básico (v2) e arquitetura de novo gerenciamento nativo da cloud (v3). Verifique o modo de implantação da sua instância na página Basic Information.

Para clusters que utilizam a arquitetura de novo gerenciamento nativo da cloud (v3), a reindexação entre clusters exige uma conexão de rede privada baseada em PrivateLink. Escolha uma solução na tabela abaixo conforme o seu cenário.
|
Cenário |
Arquitetura de rede do cluster ES |
Soluções |
|
Migração de dados entre clusters do Alibaba Cloud ES |
Ambos os clusters ES foram criados com a arquitetura de gerenciamento básico (v2). |
API reindex. Para mais informações, consulte Usar a API reindex para migrar dados entre clusters do Alibaba Cloud ES. |
|
Um dos clusters ES foi criado com a arquitetura de novo gerenciamento nativo da cloud (v3). Nota
O outro cluster ES pode ter sido criado com a arquitetura de novo gerenciamento nativo da cloud (v3) ou com a arquitetura de gerenciamento básico (v2). |
||
|
Migrar dados de um cluster ES autogerenciado em uma instância ECS para um cluster do Alibaba Cloud ES |
O cluster do Alibaba Cloud ES foi criado com a arquitetura de gerenciamento básico (v2). |
API reindex. Para mais informações, consulte Migrar dados de um cluster Elasticsearch autogerenciado para o Alibaba Cloud Elasticsearch usando reindex. |
|
O cluster do Alibaba Cloud ES foi criado com a arquitetura de novo gerenciamento nativo da cloud (v3). |
API reindex. Para mais informações, consulte Migrar dados autogerenciados do Elasticsearch via conexão privada. |
Fluxo de trabalho
-
Prepare as instâncias do Alibaba Cloud Elasticsearch e do Logstash. Certifique-se de que elas estejam na mesma Virtual Private Cloud (VPC).
Instância do Alibaba Cloud Elasticsearch: armazena os dados dos índices.
Instância do Alibaba Cloud Logstash: migra os dados processados por meio de um pipeline.
-
Etapa 1: Converter tipos de índice
Use a API reindex para converter índices com múltiplos tipos em uma instância do Alibaba Cloud Elasticsearch 5.x em índices de tipo único. Dois métodos estão disponíveis:
Mesclar tipos: consolida os dados de um índice com múltiplos tipos em uma instância do Elasticsearch 5.x em um novo índice de tipo único, utilizando um script de reindexação.
Dividir tipos: separa os dados de um índice com múltiplos tipos em uma instância do Elasticsearch 5.x em vários índices de tipo único, com base no tipo original, por meio da API reindex.
-
Etapa 2: Migrar dados usando o Logstash
Migre os dados dos índices processados para uma instância do Elasticsearch 6.x utilizando o Alibaba Cloud Logstash.
-
Etapa 3: Verificar a migração de dados
Visualize os índices migrados no Kibana.
Pré-requisitos
-
Prepare instâncias do Alibaba Cloud Elasticsearch de versão anterior (5.5.3) e de versão posterior (6.7.0), além dos dados com múltiplos tipos a serem migrados.
Para mais informações sobre como criar uma instância, consulte Criar uma instância do Alibaba Cloud Elasticsearch.
-
Crie uma instância do Alibaba Cloud Logstash na mesma Virtual Private Cloud das suas instâncias do Alibaba Cloud Elasticsearch.
Para mais informações, consulte Etapa 2: Criar uma instância do Alibaba Cloud Logstash.
Etapa 1: Converter tipos de índice
Os passos a seguir demonstram como mesclar tipos, consolidando os dados de um índice com múltiplos tipos em um índice de tipo único.
-
Ative a criação automática de índices para sua instância do Elasticsearch.
Faça login no console do Alibaba Cloud Elasticsearch.
No painel de navegação à esquerda, clique em Elasticsearch Clusters.
Na barra de navegação superior, selecione um grupo de recursos e uma região.
Na lista de instâncias, clique no ID da instância de versão anterior.
No painel de navegação à esquerda, clique em Cluster Configuration.
Clique em YML File Configuration ao lado de Modify Configuration.
-
Na página YML File Configuration, defina Auto Indexing como Enable.
AvisoAlterar a configuração de Auto Indexing reinicia a instância. Certifique-se de que essa ação não afetará negativamente seus serviços antes de continuar.
Marque a caixa de seleção This operation restarts the instance. Confirm to proceed. e clique em OK.
-
Faça login no console do Kibana da instância do Elasticsearch de versão anterior.
Para mais informações, consulte Fazer login no console do Kibana.
-
No painel de navegação à esquerda, clique em Dev Tools.
Se a instância de versão anterior não contiver dados de índice com múltiplos tipos, execute os seguintes comandos no Console para criar dados de teste:
PUT twitter/tweet/1 {"user": "kimchy", "message": "trying out Elasticsearch"} PUT twitter/tweet/2 {"user": "kimchy", "message": "another tweet"} PUT twitter/user/1 {"name": "kimchy", "email": "kimchy@elastic.co"} PUT twitter/user/2 {"name": "elastic", "email": "info@elastic.co"} -
No Console, execute o seguinte comando para mesclar os dados de um índice com múltiplos tipos em um índice de tipo único.
POST _reindex { "source": { "index": "twitter" }, "dest": { "index": "new1" }, "script": { "inline": """ ctx._id = ctx._type + "-" + ctx._id; ctx._source.type = ctx._type; ctx._type = "doc"; """, "lang": "painless" } }Neste exemplo, ctx._source.type adiciona um campo type ao índice new1 e define seu valor como o _type original. O _id do índice new1 é construído como _type-_id para evitar conflitos de ID entre documentos de tipos diferentes.
Execute o comando
GET new1/_mappingpara visualizar a estrutura de Mapping mesclada.-
Execute o seguinte comando para visualizar os dados no índice mesclado.
GET new1/_search { "query":{ "match_all":{ } } }
Os passos a seguir demonstram como dividir tipos, reindexando um índice com múltiplos tipos em vários índices de tipo único.
-
No Console, execute os seguintes comandos para dividir um índice com múltiplos tipos em índices de tipo único.
POST _reindex { "source": { "index": "twitter", "type": "tweet", "size": 10000 }, "dest": { "index": "twitter_tweet" } } POST _reindex { "source": { "index": "twitter", "type": "user", "size": 10000 }, "dest": { "index": "twitter_user" } }Este exemplo divide o índice twitter nos índices twitter_tweet e twitter_user com base nos diferentes tipos.
-
Execute os seguintes comandos para visualizar os dados nos índices divididos.
GET twitter_tweet/_search { "query":{ "match_all":{ } } }GET twitter_user/_search { "query":{ "match_all":{ } } }
Etapa 2: Migrar dados usando o Logstash
Acesse a página Logstash Clusters.
-
Acesse o cluster de destino.
Na barra de navegação superior, selecione a região onde o cluster está localizado.
Na página Logstash Clusters, localize o cluster e clique em seu ID.
No painel de navegação à esquerda, clique em Pipelines.
Clique em Create Pipeline.
-
Na página Create, insira um Pipeline ID e configure o pipeline.
Exemplo de configuração de pipeline:
input { elasticsearch { hosts => ["http://es-cn-0pp1f1y5g000h****.elasticsearch.aliyuncs.com:9200"] user => "elastic" index => "*" password => "your_password" docinfo => true } } filter { } output { elasticsearch { hosts => ["http://es-cn-mp91cbxsm000c****.elasticsearch.aliyuncs.com:9200"] user => "elastic" password => "your_password" index => "test" } }Neste exemplo, o parâmetro index na seção output está definido como test. Substitua-o pelo nome real do seu índice de destino.
Para mais informações sobre os parâmetros de configuração do pipeline, consulte Referência do arquivo de configuração do Logstash.
-
Clique em Next step e configure os parâmetros do pipeline.
Parâmetro
Descrição
Pipeline Workers
Número de threads de trabalho para as etapas de filtro e saída. Aumente este valor se houver acúmulo de eventos ou subutilização da CPU. Padrão: número de núcleos da CPU.
Pipeline Batch Size
Quantidade máxima de eventos que um worker coleta antes de executar filtros e saídas. Lotes maiores aumentam o uso de memória e podem exigir um tamanho maior de heap JVM (LS_HEAP_SIZE). Padrão: 125.
Pipeline Batch Delay
Tempo de espera em milissegundos antes de enviar um lote incompleto para uma thread de trabalho. Padrão: 50 ms.
Queue Type
Modelo interno de enfileiramento para buffer de eventos. Valores válidos:
-
MEMORY: padrão. Utiliza uma fila em memória.
-
PERSISTED: fila persistente baseada em disco.
Queue Max Bytes
Quantidade máxima de dados que a fila pode armazenar, em
MB. O valor deve ser um inteiro de1a253-1. Valor padrão:1024.NotaCertifique-se de que este valor seja menor que a capacidade total do seu disco.
Queue Checkpoint Writes
Número máximo de eventos gravados antes que um checkpoint seja forçado (apenas para fila persistente). 0 significa sem limite. Padrão: 1024.
AvisoSalvar e implantar aciona o reinício da instância. Prossiga apenas se isso não impactar seus negócios.
-
-
Clique em Save ou Save and Deploy.
Save: salva a configuração do pipeline, mas não a aplica. Após salvar, você retorna à página Pipelines. Na seção Pipelines, clique em Deploy Now na coluna Actions para reiniciar a instância e aplicar a configuração.
Save and Deploy: salva e implanta a configuração, reiniciando a instância para aplicar as alterações.
Etapa 3: Verificar a migração de dados
-
Faça login no console do Kibana da instância do Elasticsearch de versão posterior.
Para mais informações, consulte Fazer login no console do Kibana.
No painel de navegação à esquerda, clique em Dev Tools.
-
No Console, execute o seguinte comando para visualizar os índices migrados.
GET _cat/indices?v