Utilize um catalog para migrar dados offline de um cluster Elasticsearch para uma instância ApsaraDB for SelectDB. O catalog mapeia os índices do Elasticsearch para tabelas do SelectDB, permitindo que você execute uma única instrução INSERT INTO ... SELECT para concluir a migração.
Pré-requisitos
Antes de começar, certifique-se de que:
Existe conectividade de rede entre o cluster Elasticsearch e a instância SelectDB. Todos os nós do cluster Elasticsearch devem residir na mesma virtual private cloud (VPC) da instância SelectDB. Caso os nós estejam em VPCs diferentes, configure primeiro a conectividade entre VPCs. Para mais informações, consulte O que devo fazer se falhar o estabelecimento de conexão entre uma instância ApsaraDB for SelectDB e uma fonte de dados?
Os endereços IP de todos os nós do cluster Elasticsearch foram adicionados à lista de permissões de endereços IP da instância SelectDB. Para mais informações, consulte Configurar uma lista de permissões de endereços IP.
Os endereços IP da VPC da instância SelectDB foram adicionados à lista de permissões do cluster Elasticsearch (caso o cluster ofereça suporte a listas de permissões). Para obter os endereços IP da VPC, consulte Como visualizo os endereços IP na VPC à qual minha instância ApsaraDB SelectDB pertence?. Para obter o endereço IP público, execute
pingno endpoint público da instância SelectDB.Você possui familiaridade básica com catalogs no SelectDB. Para contexto, consulte Data lakehouse.
Como funciona
A criação de um catalog estabelece uma conexão somente leitura do SelectDB com seu cluster Elasticsearch. Após a criação do catalog, o SelectDB cria automaticamente um banco de dados chamado default_db dentro dele e mapeia cada índice do Elasticsearch para uma tabela nesse banco de dados. Em seguida, você pode consultar o catalog e executar INSERT INTO ... SELECT para copiar dados para uma tabela do SelectDB.
O SelectDB só consegue ler dados de um catalog externo. Não há suporte para escrita de volta no cluster Elasticsearch.
Ambiente de exemplo
As etapas a seguir utilizam estes valores de exemplo. Substitua-os pelos seus próprios valores conforme necessário.
|
Item |
Valor |
|
Índice do Elasticsearch (source) |
|
|
Banco de dados do SelectDB (destino) |
|
|
Tabela do SelectDB (destino) |
|
Preparar os dados de source de exemplo
Para mais informações, consulte Introdução.
Migrar dados offline
Etapa 1: Conectar-se à instância SelectDB
Para instruções de conexão, consulte Conectar-se a uma instância.
Etapa 2: Criar um catalog do Elasticsearch
Execute a seguinte instrução para criar um catalog que aponte para o seu 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"
);
A tabela a seguir descreve as propriedades do catalog:
|
Parâmetro |
Obrigatório |
Padrão |
Descrição |
|
|
Sim |
— |
Nome do catalog. Altere o nome conforme os requisitos do seu negócio. |
|
|
Sim |
— |
Defina como |
|
|
Sim |
— |
URL de acesso do cluster Elasticsearch. Formato: |
|
|
Não |
— |
Nome de usuário para acessar o cluster Elasticsearch. |
|
|
Não |
— |
Senha para acessar o cluster Elasticsearch. |
|
|
Não |
|
Habilita o armazenamento orientado a colunas (doc_values) para consulta de valores de campo. Quando ativado, o SelectDB consulta automaticamente campos com doc_values habilitado, o que melhora significativamente o desempenho de consultas em um pequeno número de colunas. |
|
|
Não |
|
Detecta campos TEXT no Elasticsearch e os consulta usando os campos KEYWORD correspondentes. Quando definido como |
|
|
Não |
|
Habilita a descoberta de nós do Elasticsearch. Quando |
|
|
Não |
|
Mapeia o campo |
|
|
Não |
|
Converte consultas LIKE em consultas wildcard do Elasticsearch e as envia (push down) para o cluster. Isso pode aumentar o consumo de CPU no cluster Elasticsearch em alguns cenários. Defina como |
|
|
Não |
|
Inclui índices ocultos nas condições de consulta. |
Etapa 3: Verificar o catalog
Execute SHOW CATALOGS para confirmar que o catalog foi criado:
SHOW CATALOGS;
Saída esperada:
+--------------+--------------+----------+-----------+-------------------------+---------------------+------------------------+
| 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 |
+--------------+--------------+----------+-----------+-------------------------+---------------------+------------------------+
Etapa 4: (Opcional) Consultar o catalog do Elasticsearch
Mude para o catalog externo para navegar pelas tabelas mapeadas:
SWITCH es_catalog;
Consulte e acesse dados no es_catalog da mesma forma que faria no catalog interno. Para exemplos de consulta, consulte a seção "Consultar dados de uma fonte de dados Elasticsearch" do tópico Fonte de dados Elasticsearch.
Retorne ao catalog interno quando terminar:
SWITCH internal;
Etapa 5: Criar o banco de dados de destino
Ignore esta etapa se o banco de dados já existir.
CREATE DATABASE es_db;
Mude para o banco de dados de destino:
USE es_db;
Etapa 6: Criar a tabela de destino
Antes de criar a tabela, revise os mapeamentos de tipos de colunas entre o Elasticsearch e o SelectDB. Para a referência completa de mapeamento de tipos, consulte a seção "Mapeamentos de tipos de colunas" do tópico Fonte de dados Elasticsearch.
Crie a tabela usando tipos de colunas que correspondam ao esquema do índice do Elasticsearch:
CREATE TABLE test_Es2SelectDB
(
`annual_rate` VARCHAR(200),
`describe` TEXT,
`productName` VARCHAR(200)
)
DISTRIBUTED BY HASH(productName) BUCKETS 4
PROPERTIES("replication_num" = "1");
Etapa 7: Migrar dados
Execute INSERT INTO ... SELECT para copiar todas as linhas do índice do Elasticsearch para a tabela do SelectDB:
INSERT INTO test_Es2SelectDB SELECT * FROM es_catalog.default_db.product_info;
Etapa 8: Verificar a migração
Consulte a tabela de destino para confirmar que os dados foram importados:
SELECT * FROM test_Es2SelectDB;
Migrar dados incrementais
Em ambientes de produção, os dados do Elasticsearch geralmente incluem tanto dados históricos (offline) quanto dados incrementais contínuos. Utilize as estratégias a seguir com base no seu tipo de dado.
Dados de log
Grave novas entradas de log simultaneamente no cluster Elasticsearch e na instância SelectDB. Assim que houver dados suficientes acumulados no SelectDB, execute suas consultas de análise diretamente nele.
Dados transacionais ou de eventos
Utilize o modelo de chave única (Unique key model) do SelectDB para lidar com a deduplicação automaticamente. Grave dados incrementais tanto no cluster Elasticsearch quanto no SelectDB em paralelo. Migre os dados históricos usando as etapas de migração offline acima. Se houver sobreposição entre registros históricos e incrementais, o modelo de chave única deduplica com base na chave primária, eliminando a necessidade de resolução manual de conflitos.
Compatibilidade com o ecossistema ELK
Para coleta de logs, o SelectDB oferece plug-ins personalizados e aprimorados para Filebeat e Logstash, permitindo coletar e processar dados de log com eficiência. Você também pode coletar logs importando dados. Para mais informações, consulte os seguintes tópicos:
Próximos passos
Fonte de dados Elasticsearch — Referência completa de parâmetros, mapeamentos de tipos de colunas e detalhes sobre predicate pushdown
Data lakehouse — Trabalho com catalogs externos no SelectDB
Configurar uma lista de permissões de endereços IP — Controle de acesso à rede para sua instância SelectDB