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 :
La connectivité réseau est établie entre le cluster Elasticsearch et l'instance SelectDB. Tous les nœuds du cluster Elasticsearch doivent se trouver dans le même VPC que l'instance SelectDB. Si les nœuds se trouvent dans des VPC différents, configurez d'abord la connectivité inter-VPC. Pour plus d'informations, consultez la rubrique Que faire si la connexion entre une instance ApsaraDB for SelectDB et une source de données échoue ?
Les adresses IP de tous les nœuds du cluster Elasticsearch ont été ajoutées à la liste d'autorisation d'adresses IP de l'instance SelectDB. Pour plus d'informations, consultez la rubrique Configurer une liste d'autorisation d'adresses IP.
Les adresses IP VPC de l'instance SelectDB ont été ajoutées à la liste d'autorisation du cluster Elasticsearch (si le cluster prend en charge cette fonctionnalité). Pour obtenir les adresses IP VPC, consultez la rubrique Comment afficher les adresses IP dans le VPC auquel mon instance ApsaraDB SelectDB appartient ?. Pour obtenir l'adresse IP publique, exécutez la commande
pingsur l'endpoint public de l'instance SelectDB.Vous connaissez les bases des catalogs dans SelectDB. Pour plus de contexte, consultez la rubrique Data lakehouse.
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.
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
Source de données Elasticsearch — Référence complète des paramètres, mappages de types de colonnes et détails du pushdown de prédicat
Data lakehouse — Utilisation des catalogs externes dans SelectDB
Configurer une liste d'autorisation d'adresses IP — Contrôle d'accès réseau pour votre instance SelectDB