Use um catalog para migrar dados offline de um cluster do Elasticsearch para uma instância do ApsaraDB for SelectDB. O catalog mapeia os índices do Elasticsearch para tabelas do SelectDB, permitindo executar uma única instrução INSERT INTO ... SELECT para concluir a migração.
Pré-requisitos
Antes de começar, certifique-se de que:
Há conectividade de rede entre o cluster do Elasticsearch e a instância do SelectDB. Todos os nós do cluster do Elasticsearch devem residir na mesma VPC da instância do SelectDB. Se os nós estiverem em VPCs diferentes, configure primeiro a conectividade entre VPCs. Para mais informações, consulte What do I do if a connection fails to be established between an ApsaraDB for SelectDB instance and a data source?
Os endereços IP de todos os nós do cluster do Elasticsearch estejam na lista de permissões de endereços IP da instância do SelectDB. Para mais informações, consulte Configure an IP address whitelist.
Os endereços IP da VPC da instância do SelectDB estejam na lista de permissões do cluster do Elasticsearch (se o cluster tiver suporte a listas de permissões). Para obter os endereços IP da VPC, consulte How do I view the IP addresses in the VPC to which my ApsaraDB SelectDB instance belongs?. Para obter o endereço IP público, execute
pingno endpoint público da instância do SelectDB.Tenha familiaridade básica com catalogs no SelectDB. Para mais informações, consulte Data lakehouse.
Como funciona
Criar um catalog estabelece uma conexão somente leitura do SelectDB com o seu cluster do Elasticsearch. Após criar o 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, consulte o catalog e execute INSERT INTO ... SELECT para copiar os dados para uma tabela do SelectDB.
O SelectDB lê apenas dados de um catalog externo. O SelectDB não suporta escrita no cluster do Elasticsearch.
Ambiente de exemplo
As etapas a seguir usam estes valores de exemplo. Substitua-os pelos seus próprios valores conforme necessário.
|
Item |
Valor |
|
Índice do Elasticsearch (origem) |
|
|
Banco de dados do SelectDB (destino) |
|
|
Tabela do SelectDB (destino) |
|
Preparar os dados de origem de exemplo
Para mais informações, consulte Getting started.
Migrar dados offline
Etapa 1: Conecte-se à instância do SelectDB
Para instruções de conexão, consulte Connect to an instance.
Etapa 2: Crie um catalog do Elasticsearch
Execute a instrução a seguir para criar um catalog que aponte para o seu cluster do 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 |
— |
O nome do catalog. Altere o nome conforme as necessidades do seu negócio. |
|
|
Sim |
— |
Defina como |
|
|
Sim |
— |
A URL de acesso do cluster do Elasticsearch. Formato: |
|
|
Não |
— |
O nome de usuário para acessar o cluster do Elasticsearch. |
|
|
Não |
— |
A senha para acessar o cluster do Elasticsearch. |
|
|
Não |
|
Ativa o armazenamento orientado a colunas (doc_values) para consultar valores de campos. Quando ativado, o SelectDB consulta automaticamente campos com doc_values habilitado, melhorando 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 |
|
|
Não |
|
Ativa a descoberta de nós do Elasticsearch. Quando |
|
|
Não |
|
Mapeia o campo |
|
|
Não |
|
Converte consultas LIKE em consultas com curinga do Elasticsearch e as envia (push down) para o cluster. Isso pode aumentar o consumo de CPU no cluster do Elasticsearch em alguns cenários. Defina como |
|
|
Não |
|
Inclui índices ocultos nas condições de consulta. |
Etapa 3: Verifique o catalog
Execute SHOW CATALOGS e confirme a criação do catalog:
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) Consulte o catalog do Elasticsearch
Alterne para o catalog externo para navegar pelas tabelas mapeadas:
SWITCH es_catalog;
Consulte e acesse os dados no es_catalog como faria no catalog interno. Para exemplos de consulta, consulte a seção "Query data from an Elasticsearch data source" do tópico Elasticsearch data source.
Retorne ao catalog interno ao terminar:
SWITCH internal;
Etapa 5: Crie 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: Crie a tabela de destino
Antes de criar a tabela, revise os mapeamentos de tipos de coluna entre o Elasticsearch e o SelectDB. Para a referência completa de mapeamentos de tipos, consulte a seção "Column type mappings" do tópico Elasticsearch data source.
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: Migre 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: Verifique a migração
Consulte a tabela de destino e confirme a importação dos dados:
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. Use as seguintes estratégias de acordo com o tipo de dado.
Dados de log
Grave novas entradas de log simultaneamente no cluster do Elasticsearch e na instância do SelectDB. Quando houver dados suficientes acumulados no SelectDB, execute suas consultas de análise diretamente no SelectDB.
Dados transacionais ou de eventos
Use o modelo Unique key do SelectDB para lidar com a deduplicação automaticamente. Grave dados incrementais tanto no cluster do Elasticsearch quanto no SelectDB em paralelo. Migre os dados históricos usando as etapas de migração offline acima. Caso haja sobreposição entre registros históricos e incrementais, o modelo Unique key deduplica com base na chave primária, eliminando a necessidade de resolução manual de conflitos.
Compatibilidade com o ecossistema ELK
Para a coleta de logs, o SelectDB oferece plug-ins personalizados e aprimorados do Filebeat e do Logstash, a fim de coletar e processar dados de log de forma eficiente. Também é possível coletar logs por meio da importação de dados. Para mais informações, consulte os seguintes tópicos:
Próximos passos
Elasticsearch data source — Referência completa de parâmetros, mapeamentos de tipos de coluna e detalhes de pushdown de predicados
Data lakehouse — Como trabalhar com catalogs externos no SelectDB
Configure an IP address whitelist — Controle de acesso à rede para sua instância do SelectDB