Tous les produits
Search
Centre de documentation

ApsaraDB for SelectDB:Migrer\ des\ données\ Elasticsearch

Dernière mise à jour :Aug 11, 2026

Utilisez un catalog pour migrer des données hors ligne d'un cluster Elasticsearch vers une instance ApsaraDB for SelectDB. Le catalog associe les index Elasticsearch aux tables SelectDB, ce qui permet d'exécuter une seule instruction INSERT INTO ... SELECT pour finaliser la migration.

Prérequis

Avant de commencer, assurez-vous de disposer des éléments suivants :

Fonctionnement

La création d'un catalog établit une connexion en lecture seule depuis SelectDB vers votre cluster Elasticsearch. Une fois le catalog créé, SelectDB y génère automatiquement une base de données nommée default_db et associe chaque index Elasticsearch à une table de cette base de données. Vous pouvez ensuite interroger le catalog et exécuter INSERT INTO ... SELECT pour copier les données dans une table SelectDB.

Remarque

SelectDB peut uniquement lire les données d'un catalog externe. L'écriture en retour vers le cluster Elasticsearch n'est pas prise en charge.

Environnement d'exemple

Les étapes suivantes utilisent ces valeurs d'exemple. Remplacez-les par vos propres valeurs selon vos besoins.

Élément Valeur
Index Elasticsearch (source) product_info
Base de données SelectDB (destination) es_db
Table SelectDB (destination) test_es2SelectDB

Préparer les données source d'exemple

Pour plus d'informations, consultez Premiers pas.

Migrer des données hors ligne

Étape 1 : Se connecter à l'instance SelectDB

Pour les instructions de connexion, consultez Se connecter à une instance.

Étape 2 : Créer un catalog Elasticsearch

Exécutez l'instruction suivante pour créer un catalog pointant vers votre cluster Elasticsearch :

CREATE CATALOG es_catalog PROPERTIES (
    "type"="es",
    "hosts"="http://127.0.0.1:9200",
    "user"="test_user",
    "password"="test_passwd",
    "nodes_discovery"="false"
);

Le tableau suivant décrit les propriétés du catalog :

Paramètre Obligatoire Valeur par défaut Description
es_catalog Oui Nom du catalog. Modifiez ce nom selon vos besoins métier.
type Oui Définissez cette valeur sur es.
hosts Oui URL d'accès du cluster Elasticsearch. Format : http://<adresse IP>:<port>. Pour utiliser un endpoint Server Load Balancer (SLB), définissez cette valeur sur l'URL du SLB.
user Non Nom d'utilisateur pour accéder au cluster Elasticsearch.
password Non Mot de passe pour accéder au cluster Elasticsearch.
doc_value_scan Non true Active le stockage orienté colonne (doc_values) pour l'interrogation des valeurs de champ. Lorsque cette option est activée, SelectDB interroge automatiquement les champs avec doc_values activé, ce qui améliore considérablement les performances des requêtes portant sur un petit nombre de colonnes.
keyword_sniff Non true Détecte les champs TEXT dans Elasticsearch et les interroge à l'aide des champs KEYWORD correspondants. Si la valeur est true, SelectDB fait correspondre la valeur complète du champ avant la tokenisation. Si la valeur est false, SelectDB fait correspondre des termes individuels après la tokenisation.
nodes_discovery Non true Active la découverte des nœuds Elasticsearch. Si la valeur est true, SelectDB découvre et se connecte à tous les nœuds de données disponibles. Si la valeur est false, SelectDB accède aux nœuds uniquement via l'URL spécifiée dans hosts. Définissez cette valeur sur false pour les clusters Elasticsearch Alibaba Cloud, car ils sont accessibles uniquement via URL.
mapping_es_id Non false Associe le champ _id d'Elasticsearch à une colonne SelectDB. Définissez cette valeur sur true si vous devez interroger la valeur de la clé primaire. Si la valeur est false, le champ _id n'est pas accessible dans les requêtes.
like_push_down Non true Convertit les requêtes LIKE en requêtes wildcard Elasticsearch et les transfère (push down) au cluster. Cela peut augmenter la consommation de CPU sur le cluster Elasticsearch dans certains scénarios. Définissez cette valeur sur false pour désactiver le pushdown LIKE et améliorer la précision au détriment du taux de rappel.
include_hidden_index Non false Inclut les index masqués dans les conditions de requête.

Étape 3 : Vérifier le catalog

Exécutez SHOW CATALOGS pour confirmer la création du catalog :

SHOW CATALOGS;

Résultat attendu :

+--------------+--------------+----------+-----------+-------------------------+---------------------+------------------------+
| CatalogId    | CatalogName  | Type     | IsCurrent | CreateTime              | LastUpdateTime      | Comment                |
+--------------+--------------+----------+-----------+-------------------------+---------------------+------------------------+
| 436009309195 | es_catalog   | es       |           | 2024-08-06 17:09:08.058 | 2024-07-19 18:04:37 |                        |
|            0 | internal     | internal | yes       | UNRECORDED              | NULL                | Doris internal catalog |
+--------------+--------------+----------+-----------+-------------------------+---------------------+------------------------+

Étape 4 : (Facultatif) Interroger le catalog Elasticsearch

Basculez vers le catalog externe pour parcourir les tables associées :

SWITCH es_catalog;

Interrogez et accédez aux données dans es_catalog de la même manière que dans le catalog interne. Pour des exemples de requêtes, consultez la section « Interroger des données depuis une source de données Elasticsearch » de la rubrique Source de données Elasticsearch.

Une fois terminé, revenez au catalog interne :

SWITCH internal;

Étape 5 : Créer la base de données de destination

Ignorez cette étape si la base de données existe déjà.

CREATE DATABASE es_db;

Basculez vers la base de données de destination :

USE es_db;

Étape 6 : Créer la table de destination

Avant de créer la table, examinez les correspondances de types de colonnes entre Elasticsearch et SelectDB. Pour la référence complète des correspondances de types, consultez la section « Correspondances de types de colonnes » de la rubrique Source de données Elasticsearch.

Créez la table en utilisant des types de colonnes correspondant au schéma de l'index Elasticsearch :

CREATE TABLE test_Es2SelectDB
(
    `annual_rate` VARCHAR(200),
    `describe`    TEXT,
    `productName` VARCHAR(200)
)
DISTRIBUTED BY HASH(productName) BUCKETS 4
PROPERTIES("replication_num" = "1");

Étape 7 : Migrer les données

Exécutez INSERT INTO ... SELECT pour copier toutes les lignes de l'index Elasticsearch vers la table SelectDB :

INSERT INTO test_Es2SelectDB SELECT * FROM es_catalog.default_db.product_info;

Étape 8 : Vérifier la migration

Interrogez la table de destination pour confirmer l'importation des données :

SELECT * FROM test_Es2SelectDB;

Migrer des données incrémentielles

Dans les environnements de production, les données Elasticsearch comprennent généralement à la fois des données historiques (hors ligne) et des données incrémentielles continues. Adoptez les stratégies suivantes selon votre type de données.

Données de journal

Écrivez les nouvelles entrées de journal simultanément dans le cluster Elasticsearch et dans l'instance SelectDB. Une fois qu'un volume suffisant de données est accumulé dans SelectDB, exécutez vos requêtes d'analyse directement sur SelectDB.

Données transactionnelles ou d'événements

Utilisez le modèle de clé unique (Unique key model) de SelectDB pour gérer automatiquement la déduplication. Écrivez les données incrémentielles en parallèle dans le cluster Elasticsearch et dans SelectDB. Migrez les données historiques en suivant les étapes de migration hors ligne ci-dessus. Si des enregistrements historiques et incrémentiels se chevauchent, le modèle de clé unique effectue une déduplication sur la clé primaire, éliminant ainsi toute résolution manuelle des conflits.

Compatibilité avec l'écosystème ELK

Pour la collecte de journaux, SelectDB propose des plug-ins Filebeat et Logstash personnalisés et améliorés afin de collecter et traiter efficacement les données de journal. Vous pouvez également collecter des journaux en important des données. Pour plus d'informations, consultez les rubriques suivantes :

Étapes suivantes