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 :
Connectivité réseau entre le cluster Elasticsearch et l'instance SelectDB. Tous les nœuds du cluster Elasticsearch doivent résider dans le même Virtual Private Cloud (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 Que faire si une connexion ne peut pas être établie entre une instance ApsaraDB for SelectDB et une source de données ?
Adresses IP de tous les nœuds du cluster Elasticsearch ajoutées à la liste d'autorisation d'adresses IP de l'instance SelectDB. Pour plus d'informations, consultez Configurer une liste d'autorisation d'adresses IP.
Adresses IP VPC de l'instance SelectDB ajoutées à la liste d'autorisation du cluster Elasticsearch (si le cluster prend en charge cette fonctionnalité). Pour obtenir les adresses IP VPC, consultez Comment consulter les adresses IP du VPC auquel appartient mon instance ApsaraDB SelectDB ?. Pour obtenir l'adresse IP publique, exécutez la commande
pingsur l'endpoint public de l'instance SelectDB.Connaissance de base des catalogs dans SelectDB. Pour plus de contexte, consultez Data lakehouse.
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.
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
Source de données Elasticsearch — Référence complète des paramètres, correspondances de types de colonnes et détails sur le predicate pushdown
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