Todos os produtos
Search
Central de documentação

Elasticsearch:Migrar dados usando a Reindex API

Última atualização: Jun 27, 2026

A Reindex API copia documentos de um índice de origem para um índice de destino. Você pode copiar todos os documentos ou apenas aqueles que correspondem a uma query específica. Esse processo pode ocorrer no mesmo cluster ou entre clusters diferentes. Este tópico mostra como usar a Reindex API para migrar dados de um cluster para outro.

Limitações

  • Os dois clusters devem estar na mesma região e zona de disponibilidade.

  • Modo de gerenciamento e implantação: É possível migrar dados de um cluster v2 para um cluster v3, entre dois clusters v2 ou entre dois clusters v3.

    Os clusters têm dois modos de gerenciamento e implantação: Cloud-native New Management (v3) e Basic Management (v2). Você pode visualizar o modo de gerenciamento e implantação do seu cluster na página de informações no console.

  • Versão do cluster: A migração de dados é compatível entre clusters da mesma versão principal, por exemplo, de uma versão secundária mais antiga para uma mais recente. Não é recomendável migrar dados entre versões principais diferentes, como de 7.7.1 para 8.15.1.

Pré-requisitos

Neste exemplo, migraremos dados de ES_2 para ES_1 usando a Reindex API. Antes de começar, conclua as preparações a seguir.

Preparar dados de teste

  • Em ES_2, crie um índice e insira dados de teste:

    PUT /product_info
    {
      "settings": {
        "number_of_shards": 5,
        "number_of_replicas": 1
      },
      "mappings": {
          "properties": {
            "productName": {
              "type": "text",
              "analyzer": "ik_smart"
            },
            "annual_rate":{
              "type":"keyword"
            },
            "describe": {
              "type": "text",
              "analyzer": "ik_smart"
            }
        }
      }
    }

    Esse comando cria um índice chamado product_info que contém os campos productName, annual_rate e describe. Se bem-sucedido, a solicitação retorna o resultado a seguir.

    {
      "acknowledged" : true,
      "shards_acknowledged" : true,
      "index" : "product_info"
    }

    Insira seis documentos de teste:

    POST /product_info/_bulk
    {"index":{}}
    {"productName":"Financial Product A","annual_rate":"3.2200%","describe":"A 180-day fixed-term product with a minimum investment of 20,000. Stable returns with optional message notifications."}
    {"index":{}}
    {"productName":"Financial Product B","annual_rate":"3.1100%","describe":"A 90-day regular investment product with a minimum investment of 10,000. Daily profit notifications are sent."}
    {"index":{}}
    {"productName":"Financial Product C","annual_rate":"3.3500%","describe":"A 270-day regular investment product with a minimum investment of 40,000. Daily profit notifications are sent."}
    {"index":{}}
    {"productName":"Financial Product D","annual_rate":"3.1200%","describe":"A 90-day regular investment product with a minimum investment of 12,000. Daily profit notifications are sent."}
    {"index":{}}
    {"productName":"Financial Product E","annual_rate":"3.0100%","describe":"A recommended 30-day regular investment product with a minimum investment of 8,000. Daily profit notifications are sent."}
    {"index":{}}
    {"productName":"Financial Product F","annual_rate":"2.7500%","describe":"A popular 3-day short-term product with no fees and a minimum investment of 500. Profit notifications are sent via SMS."}
  • Em ES_1, crie um índice para armazenar os dados migrados de ES_2:

    PUT dest
    {
      "settings": {
        "number_of_shards": 5,
        "number_of_replicas": 1
      }
    }

Conexão privada via NLB e PrivateLink

Para reforçar a segurança do cluster, clusters na mesma VPC ou em VPCs diferentes são isolados por rede. Você deve usar NLB e PrivateLink para estabelecer uma conexão privada (conexão VPC) entre os clusters.

Conforme mostrado na figura a seguir, os dois clusters ES estão implantados na mesma VPC. Um serviço de endpoint é criado na VPC do usuário. Em seguida, uma conexão privada é configurada no ES_1 para obter um endpoint. Por fim, o endpoint é associado ao serviço de endpoint para estabelecer uma conexão privada entre os dois clusters.

Um serviço de endpoint é um serviço ao qual outras VPCs podem se conectar de forma privada criando um endpoint. Você deve criar manualmente os recursos de serviço relacionados.
Um endpoint está associado a um serviço de endpoint e fornece uma conexão de rede privada para acessar serviços externos. Ao configurar uma conexão privada para uma instância ES da Alibaba Cloud, um endpoint é criado automaticamente no ambiente de rede onde o cluster ES reside.
image

Para ver as etapas detalhadas de configuração, consulte Estabelecer uma conexão privada entre clusters ES da Alibaba Cloud usando NLB e PrivateLink. Você deve concluir as Etapas 1, 2 e 3.

Na página Security configuration da instância ES_1, na seção Cluster network settings, clique em Modify à direita de Configure instance private connection. No painel Configure instance private connection, você pode visualizar o ID do endpoint, o ID do serviço de endpoint e o status da conexão. Quando o status de conexão do endpoint for Connected, os clusters ES_1 e ES_2 podem se comunicar por meio de seus endereços IP privados.

Configurar a lista de permissões da Reindex API

Para garantir a migração segura de dados entre clusters, você deve adicionar o endereço de conexão privada e a porta do cluster ES_2 à lista de permissões da Reindex API do ES_1.

  1. Acesse a página Security do ES_1 e clique em Edit ao lado de Configure Private Connection. No painel lateral Configure Private Connection, clique no Endpoint ID desejado.

    Para adicionar uma nova conexão, clique em + Add Private Connection na parte inferior do painel lateral Configure instance private connection.

  2. No console VPC, na guia Endpoint Connections, clique no ícone 展开符 ao lado do ID do endpoint para ver o nome de domínio correspondente.

    Importante

    Você deve remover o identificador de zona de disponibilidade do nome de domínio antes de adicioná-lo à lista de permissões da Reindex API.

    Por exemplo, se o nome de domínio completo for "ep-bp1****************-cn-hangzhou-i.epsrv-bp1****************.cn-hangzhou.privatelink.aliyuncs.com", remova o identificador de zona de disponibilidade "-cn-hangzhou-i" para obter o nome de domínio final: "ep-bp1bp1****************.epsrv-bp1****************.cn-hangzhou.privatelink.aliyuncs.com".

  3. No arquivo YML do ES_1, configure a lista de permissões da Reindex API. A entrada da lista de permissões deve ser o nome de domínio e a porta do endpoint.

    reindex:
      remote:
        whitelist: >-
          ep-bp1bp1****************.epsrv-bp1****************.cn-hangzhou.privatelink.aliyuncs.com:9200

    Na página ES cluster configuration, clique em Modify configuration à direita de YML configuration. No editor YAML Other configure no painel, adicione a configuração de lista de permissões anterior.

Chamar a Reindex API

  1. Acesse o console Kibana do ES_1.

  2. Em Dev Tools > Console, chame a Reindex API para migrar os dados.

    POST _reindex
    {
      "source": {
        "remote": {
          "host": "http://ep-bp1bp1****************.epsrv-bp1****************.cn-hangzhou.privatelink.aliyuncs.com:9200",
          "username": "elastic",
          "password": "xxx-xxxx123!"
        },
        "index": "product_info",
        "query": {
          "match": {
            "productName": "Financial Product"
          }
        }
      },
      "dest": {
        "index": "dest"
      }
    }

    Categoria

    Parâmetro

    Descrição

    source

    remote

    O cluster remoto. Neste exemplo, ES_2.

    host

    O endereço de acesso do cluster ES_2. Inclui:

    • O protocolo. Você pode encontrá-lo na página Basic Information do cluster.

      Importante

      Por segurança, use o protocolo HTTPS para evitar que a senha seja transmitida em texto simples ao se conectar ao cluster. Para habilitar o protocolo HTTPS, consulte Protocolo HTTPS.

    • Nome de domínio: O endereço de conexão privada do cluster ES_2. Deve ser o mesmo nome de domínio configurado na lista de permissões do Reindex.

    • Porta: Fixa em 9200.

    username

    O nome de usuário padrão do cluster é elastic.

    password

    A senha do usuário especificado.

    Você definiu a senha ao criar o cluster. Caso tenha esquecido, redefina a senha.

    index

    O índice de origem no cluster remoto.

    query

    Uma query que especifica quais documentos migrar.

    Neste exemplo, os documentos em que o campo productName contém "Financial Product" são migrados do índice do cluster ES_2 para o cluster ES_1.

    dest

    index

    O índice de destino no cluster de destino para os dados migrados.

    Se bem-sucedida, a solicitação retorna o resultado a seguir:

    {
      "took": 211,
      "timed_out": false,
      "total": 6,
      "updated": 6,
      "created": 0,
      "deleted": 0,
      "batches": 1,
      "version_conflicts": 0,
      "noops": 0,
      "retries": {
        "bulk": 0,
        "search": 0
      },
      "throttled_millis": 0,
      "requests_per_second": -1,
      "throttled_until_millis": 0,
      "failures": []
    }
  3. Chame a API _search para ver o resultado da migração.

    GET dest/_search

    Resultado esperado:

    {
      "took": 6,
      "timed_out": false,
      "_shards": {
        "total": 5,
        "successful": 5,
        "skipped": 0,
        "failed": 0
      },
      "hits": {
        "total": {
          "value": 6,
          "relation": "eq"
        },
        "max_score": 1,
        "hits": [
          {
            "_index": "dest",
            "_id": "n9kyqpcBCRuDZhswJCpH",
            "_score": 1,
            "_source": {
              "productName": "Financial Product D",
              "annual_rate": "3.1200%",
              "describe": "A 90-day regular investment product with a minimum investment of 12,000. Daily profit notifications are sent."
            }
          },
          {
            "_index": "dest",
            "_id": "nNkyqpcBCRuDZhswJCpG",
            "_score": 1,
            "_source": {
              "productName": "Financial Product A",
              "annual_rate": "3.2200%",
              "describe": "A 180-day fixed-term product with a minimum investment of 20,000. Stable returns with optional message notifications."
            }
          },
          {
            "_index": "dest",
            "_id": "ndkyqpcBCRuDZhswJCpG",
            "_score": 1,
            "_source": {
              "productName": "Financial Product B",
              "annual_rate": "3.1100%",
              "describe": "A 90-day regular investment product with a minimum investment of 10,000. Daily profit notifications are sent."
            }
          },
          {
            "_index": "dest",
            "_id": "ntkyqpcBCRuDZhswJCpH",
            "_score": 1,
            "_source": {
              "productName": "Financial Product C",
              "annual_rate": "3.3500%",
              "describe": "A 270-day regular investment product with a minimum investment of 40,000. Daily profit notifications are sent."
            }
          },
          {
            "_index": "dest",
            "_id": "oNkyqpcBCRuDZhswJCpH",
            "_score": 1,
            "_source": {
              "productName": "Financial Product E",
              "annual_rate": "3.0100%",
              "describe": "A recommended 30-day regular investment product with a minimum investment of 8,000. Daily profit notifications are sent."
            }
          },
          {
            "_index": "dest",
            "_id": "odkyqpcBCRuDZhswJCpH",
            "_score": 1,
            "_source": {
              "productName": "Financial Product F",
              "annual_rate": "2.7500%",
              "describe": "A popular 3-day short-term product with no fees and a minimum investment of 500. Profit notifications are sent via SMS."
            }
          }
        ]
      }
    }

Perguntas frequentes

P: Como ajustar o tamanho do lote e o tempo limite da Reindex API com base no tamanho do documento?

  • Ajustar o tamanho do lote

    O tamanho de lote padrão para uma operação de reindex é 1.000 documentos. Se o índice contiver documentos grandes, reduza esse valor para evitar timeouts.

    No exemplo a seguir, size é definido como 10 para processar 10 documentos por lote.

    POST _reindex
    {
      "source": {
        "remote": {
          "host": "http://otherhost:9200"
        },
        "index": "source",
        "size": 10,
        "query": {
          "match": {
            "test": "data"
          }
        }
      },
      "dest": {
        "index": "dest"
      }
    }
  • Ajustar o tempo limite

    O parâmetro socket_timeout, com padrão de 30 segundos, define o tempo limite de leitura do socket. O parâmetro connect_timeout, com padrão de 1 segundo, define o tempo limite de conexão do cluster.

    No exemplo a seguir, o tempo limite de leitura do socket é definido como 1 minuto e o tempo limite de conexão é definido como 10 segundos.

    POST _reindex
    {
      "source": {
        "remote": {
          "host": "http://otherhost:9200",
          "socket_timeout": "1m",
          "connect_timeout": "10s"
        },
        "index": "source",
        "query": {
          "match": {
            "test": "data"
          }
        }
      },
      "dest": {
        "index": "dest"
      }
    }