Gunakan katalog untuk memigrasi data offline dari kluster Elasticsearch ke instans ApsaraDB for SelectDB. Katalog tersebut memetakan indeks Elasticsearch ke tabel SelectDB, sehingga Anda dapat menjalankan satu pernyataan INSERT INTO ... SELECT guna menyelesaikan migrasi.
Prasyarat
Sebelum memulai, pastikan Anda telah:
Memastikan konektivitas jaringan antara kluster Elasticsearch dan instans SelectDB. Semua node kluster Elasticsearch harus berada dalam virtual private cloud (VPC) yang sama dengan instans SelectDB. Jika node berada di VPC berbeda, konfigurasikan terlebih dahulu konektivitas cross-VPC. Untuk informasi selengkapnya, lihat Apa yang harus saya lakukan jika koneksi gagal dibuat antara instans ApsaraDB for SelectDB dan sumber data?
Menambahkan alamat IP semua node kluster Elasticsearch ke daftar putih alamat IP instans SelectDB. Untuk informasi selengkapnya, lihat Konfigurasi daftar putih alamat IP.
Menambahkan alamat IP VPC instans SelectDB ke daftar putih kluster Elasticsearch (jika kluster mendukung daftar putih). Untuk mendapatkan alamat IP VPC, lihat Bagaimana cara melihat alamat IP di VPC tempat instans ApsaraDB SelectDB saya berada?. Untuk mendapatkan alamat IP publik, jalankan
pingterhadap titik akhir publik instans SelectDB.Memiliki pemahaman dasar mengenai katalog di SelectDB. Untuk latar belakang, lihat Data lakehouse.
Cara kerja
Pembuatan katalog akan membuat koneksi read-only dari SelectDB ke kluster Elasticsearch Anda. Setelah katalog dibuat, SelectDB secara otomatis membuat database bernama default_db di dalamnya dan memetakan setiap indeks Elasticsearch ke sebuah tabel di database tersebut. Anda kemudian dapat melakukan kueri terhadap katalog dan menjalankan INSERT INTO ... SELECT untuk menyalin data ke tabel SelectDB.
SelectDB hanya dapat membaca data dari katalog eksternal. Penulisan kembali ke kluster Elasticsearch tidak didukung.
Lingkungan contoh
Langkah-langkah berikut menggunakan nilai contoh berikut. Ganti dengan nilai Anda sendiri sesuai kebutuhan.
| Item | Nilai |
|---|---|
| Indeks Elasticsearch (sumber) | product_info |
| Database SelectDB (tujuan) | es_db |
| Tabel SelectDB (tujuan) | test_es2SelectDB |
Siapkan data sumber contoh
Untuk informasi selengkapnya, lihat Getting started.
Migrasi data offline
Langkah 1: Hubungkan ke instans SelectDB
Untuk instruksi koneksi, lihat Hubungkan ke instans.
Langkah 2: Buat katalog Elasticsearch
Jalankan pernyataan berikut untuk membuat katalog yang mengarah ke kluster Elasticsearch Anda:
CREATE CATALOG es_catalog PROPERTIES (
"type"="es",
"hosts"="http://127.0.0.1:9200",
"user"="test_user",
"password"="test_passwd",
"nodes_discovery"="false"
);Tabel berikut menjelaskan properti katalog:
| Parameter | Wajib | Bawaan | Deskripsi |
|---|---|---|---|
es_catalog | Ya | — | Nama katalog. Ubah nama sesuai kebutuhan bisnis Anda. |
type | Ya | — | Diatur ke es. |
hosts | Ya | — | URL akses kluster Elasticsearch. Format: http://<alamat IP>:<port>. Untuk menggunakan titik akhir Server Load Balancer (SLB), atur nilai ini ke URL SLB. |
user | Tidak | — | Username untuk mengakses kluster Elasticsearch. |
password | Tidak | — | Password untuk mengakses kluster Elasticsearch. |
doc_value_scan | Tidak | true | Mengaktifkan penyimpanan berorientasi kolom (doc_values) untuk mengkueri nilai bidang. Saat diaktifkan, SelectDB secara otomatis mengkueri bidang yang memiliki doc_values aktif, yang secara signifikan meningkatkan performa untuk kueri pada sejumlah kecil kolom. |
keyword_sniff | Tidak | true | Mendeteksi bidang TEXT di Elasticsearch dan mengkuerinya menggunakan bidang KEYWORD yang sesuai. Saat true, SelectDB mencocokkan nilai penuh bidang sebelum tokenisasi. Saat false, SelectDB mencocokkan istilah individual setelah tokenisasi. |
nodes_discovery | Tidak | true | Mengaktifkan penemuan node Elasticsearch. Saat true, SelectDB menemukan dan terhubung ke semua node data yang tersedia. Saat false, SelectDB hanya mengakses node melalui URL yang ditentukan di hosts. Atur ke false untuk kluster Elasticsearch Alibaba Cloud, yang hanya dapat diakses melalui URL. |
mapping_es_id | Tidak | false | Memetakan bidang _id Elasticsearch ke kolom SelectDB. Atur ke true jika Anda perlu mengkueri nilai primary key. Saat false, bidang _id tidak dapat diakses dalam kueri. |
like_push_down | Tidak | true | Mengonversi kueri LIKE menjadi kueri wildcard Elasticsearch dan mendorongnya ke kluster. Ini dapat meningkatkan konsumsi CPU pada kluster Elasticsearch dalam beberapa skenario. Atur ke false untuk menonaktifkan LIKE pushdown dan meningkatkan akurasi dengan mengorbankan tingkat recall. |
include_hidden_index | Tidak | false | Menyertakan indeks tersembunyi dalam kondisi kueri. |
Langkah 3: Verifikasi katalog
Jalankan SHOW CATALOGS untuk memastikan katalog telah dibuat:
SHOW CATALOGS;Output yang diharapkan:
+--------------+--------------+----------+-----------+-------------------------+---------------------+------------------------+
| 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 |
+--------------+--------------+----------+-----------+-------------------------+---------------------+------------------------+Langkah 4: (Opsional) Lakukan kueri terhadap katalog Elasticsearch
Beralih ke katalog eksternal untuk menelusuri tabel yang dipetakan:
SWITCH es_catalog;Lakukan kueri dan akses data di es_catalog seperti halnya di katalog internal. Untuk contoh kueri, lihat bagian "Query data from an Elasticsearch data source" pada topik Elasticsearch data source.
Kembali ke katalog internal setelah selesai:
SWITCH internal;Langkah 5: Buat database tujuan
Lewati langkah ini jika database sudah ada.
CREATE DATABASE es_db;Beralih ke database tujuan:
USE es_db;Langkah 6: Buat tabel tujuan
Sebelum membuat tabel, tinjau pemetaan tipe kolom antara Elasticsearch dan SelectDB. Untuk referensi lengkap pemetaan tipe, lihat bagian "Column type mappings" pada topik Elasticsearch data source.
Buat tabel menggunakan tipe kolom yang sesuai dengan skema indeks Elasticsearch:
CREATE TABLE test_Es2SelectDB
(
`annual_rate` VARCHAR(200),
`describe` TEXT,
`productName` VARCHAR(200)
)
DISTRIBUTED BY HASH(productName) BUCKETS 4
PROPERTIES("replication_num" = "1");Langkah 7: Migrasi data
Jalankan INSERT INTO ... SELECT untuk menyalin semua baris dari indeks Elasticsearch ke tabel SelectDB:
INSERT INTO test_Es2SelectDB SELECT * FROM es_catalog.default_db.product_info;Langkah 8: Verifikasi migrasi
Lakukan kueri terhadap tabel tujuan untuk memastikan data telah diimpor:
SELECT * FROM test_Es2SelectDB;Migrasi data inkremental
Di lingkungan produksi, data Elasticsearch biasanya mencakup data historis (offline) dan data inkremental yang berkelanjutan. Gunakan strategi berikut berdasarkan jenis data Anda.
Data log
Tulis entri log baru secara simultan ke kluster Elasticsearch dan instans SelectDB. Setelah cukup banyak data terkumpul di SelectDB, jalankan kueri analisis Anda langsung terhadap SelectDB.
Data transaksional atau data event
Gunakan model Unique key SelectDB untuk menangani deduplikasi secara otomatis. Tulis data inkremental ke kluster Elasticsearch dan SelectDB secara paralel. Migrasikan data historis menggunakan langkah migrasi offline di atas. Jika terdapat tumpang tindih antara catatan historis dan inkremental, model Unique key akan menghapus duplikat berdasarkan primary key, sehingga tidak diperlukan resolusi konflik manual.
Kompatibilitas ekosistem ELK
Untuk pengumpulan log, SelectDB menawarkan plugin Filebeat dan Logstash yang dikustomisasi dan disempurnakan untuk mengumpulkan serta memproses data log secara efisien. Anda juga dapat mengumpulkan log dengan mengimpor data. Untuk informasi selengkapnya, lihat topik berikut:
Langkah selanjutnya
Elasticsearch data source — Referensi parameter lengkap, pemetaan tipe kolom, dan detail predicate pushdown
Data lakehouse — Menggunakan katalog eksternal di SelectDB
Konfigurasi daftar putih alamat IP — Kontrol akses jaringan untuk instans SelectDB Anda