Tous les produits
Search
Centre de documentation

ApsaraDB for SelectDB:Migrer des données Elasticsearch

Dernière mise à jour :Sep 24, 2026

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

Prérequis

Avant de commencer, assurez-vous que :

Fonctionnement

La création d'un catalog établit une connexion en lecture seule de SelectDB vers votre cluster Elasticsearch. Une fois le catalog créé, SelectDB crée automatiquement une base de données nommée default_db à l'intérieur de celui-ci et mappe chaque index Elasticsearch à une table dans cette base de données. Vous pouvez ensuite interroger le catalog et exécuter une instruction INSERT INTO ... SELECT pour copier les données dans une table SelectDB.

Remarque

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

Environnement d'exemple

Les étapes suivantes utilisent les valeurs d'exemple ci-dessous. Remplacez-les par vos propres valeurs si nécessaire.

É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 la rubrique Prise en main.

Migrer des données hors ligne

Étape 1 : Se connecter à l'instance SelectDB

Pour les instructions de connexion, consultez la rubrique 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 Par défaut Description
es_catalog Oui — Nom du catalog. Modifiez le nom selon vos besoins métier.
type Oui — Définissez sur es.
hosts Oui — URL d'accès du cluster Elasticsearch. Format : http://<adresse IP>:<port>. Pour utiliser un endpoint SLB, définissez ce paramètre 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é colonnes (doc_values) pour l'interrogation des valeurs de champ. Lorsqu'il est activé, 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 en utilisant les champs KEYWORD correspondants. Lorsque la valeur est true, SelectDB fait correspondre la valeur complète du champ avant la tokenisation. Lorsque la valeur est false, SelectDB fait correspondre les termes individuels après la tokenisation.
nodes_discovery Non true Active la découverte des nœuds Elasticsearch. Lorsque la valeur est true, SelectDB découvre et se connecte à tous les nœuds de données disponibles. Lorsque la valeur est false, SelectDB accède aux nœuds uniquement via l'URL spécifiée dans hosts. Définissez sur false pour les clusters Alibaba Cloud Elasticsearch, accessibles uniquement via URL.
mapping_es_id Non false Mappe le champ _id d'Elasticsearch à une colonne SelectDB. Définissez sur true si vous devez interroger la valeur de la clé primaire. Lorsque 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 pousse vers le cluster. Cela peut augmenter la consommation de CPU sur le cluster Elasticsearch dans certains scénarios. Définissez 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;

Sortie attendue :

+--------------+--------------+----------+-----------+-------------------------+---------------------+------------------------+
| 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 mappé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 les données depuis une source de données Elasticsearch » de la rubrique Source de données Elasticsearch.

Revenez au catalog interne une fois terminé :

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 mappages de types de colonnes entre Elasticsearch et SelectDB. Pour la référence complète des mappages de types, consultez la section « Mappages 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 incluent généralement des données historiques (hors ligne) et des données incrémentielles continues. Utilisez les stratégies suivantes en fonction de votre type de données.

Données de journalisation

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

Données transactionnelles ou événementielles

Utilisez le modèle de clé unique de SelectDB pour gérer automatiquement la déduplication. Écrivez les données incrémentielles en parallèle dans le cluster Elasticsearch et SelectDB. Migrez les données historiques en suivant les étapes de migration hors ligne ci-dessus. Si les enregistrements historiques et incrémentiels se chevauchent, le modèle de clé unique effectue la déduplication sur la clé primaire, sans nécessiter de 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 pour collecter et traiter efficacement les données de journalisation. Vous pouvez également collecter des journaux en important des données. Pour plus d'informations, consultez les rubriques suivantes :

Étapes suivantes