Tous les produits
Search
Centre de documentation

Elasticsearch:Utilisation de l'API Reindex pour migrer des données multi-types

Dernière mise à jour :Aug 09, 2026

Elasticsearch 6.x ne prend plus en charge les types multiples au sein d'un même index. Utilisez l'API Reindex pour convertir les index multi-types d'une instance 5.x en index à type unique, puis migrez les données vers une instance 6.x à l'aide de Logstash.

Considérations préalables

Alibaba Cloud ES propose deux modes de déploiement : l'architecture de gestion de base (v2) et la nouvelle architecture de gestion cloud-native (v3). Vérifiez le mode de déploiement de votre instance sur la page Informations de base.

image

Pour les clusters utilisant la nouvelle architecture de gestion cloud-native (v3), le reindexage inter-clusters nécessite une connexion réseau privé basée sur PrivateLink. Sélectionnez une solution dans le tableau suivant selon votre scénario.

Scénario

Architecture réseau du cluster ES

Solutions

Migration de données entre des clusters Alibaba Cloud ES

Les deux clusters ES utilisent l'architecture de gestion de base (v2).

API reindex. Pour plus d'informations, consultez Utilisation de l'API reindex pour migrer des données entre des clusters Alibaba Cloud ES.

L'un des clusters ES utilise la nouvelle architecture de gestion cloud-native (v3).

Remarque

L'autre cluster ES peut utiliser la nouvelle architecture de gestion cloud-native (v3) ou l'architecture de gestion de base (v2).

Migration de données d'un cluster ES auto-géré sur une instance ECS vers un cluster Alibaba Cloud ES

Le cluster Alibaba Cloud ES utilise l'architecture de gestion de base (v2).

API reindex. Pour plus d'informations, consultez Migration de données d'un cluster Elasticsearch auto-géré vers Alibaba Cloud Elasticsearch à l'aide de reindex.

Le cluster Alibaba Cloud ES utilise la nouvelle architecture de gestion cloud-native (v3).

API reindex. Pour plus d'informations, consultez Migration de données Elasticsearch auto-gérées via une connexion privée.

Flux de travail

  1. Prérequis

    Préparez des instances Alibaba Cloud Elasticsearch et Logstash. Assurez-vous qu'elles se trouvent dans le même Virtual Private Cloud (VPC).

    • Instance Alibaba Cloud Elasticsearch : stocke les données d'index.

    • Instance Alibaba Cloud Logstash : migre les données traitées via un pipeline.

  2. Étape 1 : Convertir les types d'index

    Utilisez l'API reindex pour convertir les index multi-types d'une instance Alibaba Cloud Elasticsearch 5.x en index à type unique. Deux méthodes sont disponibles :

    • Fusionner les types : fusionnez les données d'un index multi-types d'une instance Elasticsearch 5.x dans un nouvel index à type unique à l'aide d'un script reindex.

    • Séparer les types : répartissez les données d'un index multi-types d'une instance Elasticsearch 5.x en plusieurs index à type unique selon le type d'origine à l'aide de l'API reindex.

  3. Étape 2 : Migrer les données à l'aide de Logstash

    Migrez les données d'index traitées vers une instance Elasticsearch 6.x à l'aide d'Alibaba Cloud Logstash.

  4. Étape 3 : Vérifier la migration des données

    Consultez les index migrés dans Kibana.

Prérequis

  1. Préparez des instances Alibaba Cloud Elasticsearch de versions antérieure (5.5.3) et ultérieure (6.7.0), ainsi que les données multi-types à migrer.

    Pour plus d'informations sur la création d'une instance, consultez Création d'une instance Alibaba Cloud Elasticsearch.

  2. Créez une instance Alibaba Cloud Logstash dans le même Virtual Private Cloud que vos instances Alibaba Cloud Elasticsearch.

    Pour plus d'informations, consultez Étape 2 : Création d'une instance Alibaba Cloud Logstash.

Étape 1 : Convertir les types d'index

Les étapes suivantes illustrent la fusion des types, qui consiste à consolider les données d'un index multi-types en un index à type unique.

  1. Activez la création automatique d'index pour votre instance Elasticsearch.

    1. Connectez-vous à la console Alibaba Cloud Elasticsearch.

    2. Dans le volet de navigation de gauche, cliquez sur Elasticsearch Clusters.

    3. Dans la barre de navigation supérieure, sélectionnez un groupe de ressources et une région.

    4. Dans la liste des instances, cliquez sur l'ID de l'instance de version antérieure.

    5. Dans le volet de navigation de gauche, cliquez sur Cluster Configuration.

    6. Cliquez sur YML File Configuration à côté de Modify Configuration.

    7. Sur la page YML File Configuration, définissez Auto Indexing sur Enable.允许自动创建索引

      Avertissement

      La modification du paramètre Auto Indexing entraîne le redémarrage de l'instance. Assurez-vous que cette action n'affectera pas négativement vos services avant de poursuivre.

    8. Cochez la case This operation restarts the instance. Confirm to proceed., puis cliquez sur OK.

  2. Connectez-vous à la console Kibana de l'instance Elasticsearch de version antérieure.

    Pour plus d'informations, consultez Connexion à la console Kibana.

  3. Dans le volet de navigation de gauche, cliquez sur Dev Tools.

    Si l'instance de version antérieure ne contient pas de données d'index multi-types, exécutez les commandes suivantes dans la Console pour créer des données de test :

    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"}
  4. Dans la Console, exécutez la commande suivante pour fusionner les données d'un index multi-types en un index à type unique.

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

    Dans cet exemple, ctx._source.type ajoute un champ type à l'index new1 et définit sa valeur sur le _type d'origine. L'_id de l'index new1 est construit sous la forme _type-_id afin d'éviter les conflits d'ID entre les documents de différents types.

  5. Exécutez la commande GET new1/_mapping pour afficher la structure de Mapping fusionnée.

  6. Exécutez la commande suivante pour afficher les données de l'index fusionné.

    GET new1/_search
    {
       "query":{
         "match_all":{
          }
      }
    }

Les étapes suivantes illustrent la séparation des types, qui consiste à réindexer un index multi-types en plusieurs index à type unique.

  1. Dans la Console, exécutez les commandes suivantes pour séparer un index multi-types en index à type unique.

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

    Cet exemple divise l'index twitter en indices twitter_tweet et twitter_user selon les différents types.

  2. Exécutez les commandes suivantes pour afficher les données des index séparés.

    GET twitter_tweet/_search
    {
       "query":{
         "match_all":{
    
          }
      }
    }
    GET twitter_user/_search
    {
       "query":{
         "match_all":{
    
          }
      }
    }

Étape 2 : Migrer les données à l'aide de Logstash

  1. Accédez à la page Logstash Clusters.

  2. Accédez au cluster cible.

    1. Dans la barre de navigation supérieure, sélectionnez la région où réside le cluster.

    2. Sur la page Logstash Clusters, recherchez le cluster et cliquez sur son ID.

  3. Dans le volet de navigation de gauche, cliquez sur Pipelines.

  4. Cliquez sur Create Pipeline.

  5. Sur la page Create, saisissez un Pipeline ID et configurez le pipeline.

    Exemple de configuration 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"
      }
    }

    Dans cet exemple, le paramètre index de la section output est défini sur test. Remplacez-le par le nom réel de votre index cible.

    Pour plus d'informations sur les paramètres de configuration du pipeline, consultez Référence du fichier de configuration Logstash.

  6. Cliquez sur Next step et configurez les paramètres du pipeline.

    Paramètre

    Description

    Pipeline Workers

    Nombre de threads de travail pour les étapes de filtrage et de sortie. Augmentez cette valeur si les événements s'accumulent ou si le processeur est sous-utilisé. Valeur par défaut : nombre de cœurs de processeur.

    Pipeline Batch Size

    Nombre maximal d'événements collectés par un worker avant l'exécution des filtres et des sorties. Des lots plus volumineux augmentent l'utilisation de la mémoire et peuvent nécessiter une taille de tas JVM plus importante (LS_HEAP_SIZE). Valeur par défaut : 125.

    Pipeline Batch Delay

    Temps d'attente en millisecondes avant l'envoi d'un lot de taille insuffisante à un thread de travail. Valeur par défaut : 50 ms.

    Queue Type

    Modèle de mise en file d'attente interne pour la mise en tampon des événements entre les étapes. Valeurs valides :

    • MEMORY : Valeur par défaut. Utilise une file d'attente en mémoire.

    • PERSISTED : File d'attente persistante basée sur le disque.

    Queue Max Bytes

    Quantité maximale de données que la file d'attente peut stocker, en MB. La valeur doit être un entier compris entre 1 et 253-1. Valeur par défaut : 1024.

    Remarque

    Assurez-vous que cette valeur est inférieure à votre capacité totale de disque.

    Queue Checkpoint Writes

    Nombre maximal d'événements écrits avant qu'un point de contrôle ne soit forcé (file d'attente persistante uniquement). 0 signifie aucune limite. Valeur par défaut : 1024.

    Avertissement

    L'enregistrement et le déploiement de la configuration déclenchent le redémarrage de l'instance. Procédez uniquement lorsque cela n'affectera pas votre activité.

  7. Cliquez sur Save ou Save and Deploy.

    • Save : Enregistre la configuration du pipeline sans l'appliquer. Après l'enregistrement, vous revenez à la page Pipelines. Dans la section Pipelines, vous pouvez cliquer sur Deploy Now dans la colonne Actions pour redémarrer l'instance et appliquer la configuration.

    • Save and Deploy : Enregistre et déploie la configuration, en redémarrant l'instance pour appliquer les modifications.

Étape 3 : Vérifier la migration des données

  1. Connectez-vous à la console Kibana de l'instance Elasticsearch de version ultérieure.

    Pour plus d'informations, consultez Connexion à la console Kibana.

  2. Dans le volet de navigation de gauche, cliquez sur Dev Tools.

  3. Dans la Console, exécutez la commande suivante pour afficher les index migrés.

    GET _cat/indices?v