Topik ini menjelaskan cara menggunakan katalog untuk memigrasikan data offline dari kluster Elasticsearch ke instans ApsaraDB for SelectDB.
Prasyarat
Semua node di kluster Elasticsearch terhubung ke instans SelectDB.
Semua node di kluster Elasticsearch berada dalam virtual private cloud (VPC) yang sama dengan instans SelectDB. Jika node di kluster sumber data berada di VPC yang berbeda, Anda harus menghubungkan node tersebut ke instans SelectDB. Untuk informasi lebih lanjut, lihat Apa yang harus saya lakukan jika koneksi gagal dibuat antara instans ApsaraDB for SelectDB dan sumber data?
Alamat IP semua node di kluster Elasticsearch telah ditambahkan ke daftar putih alamat IP instans SelectDB. Untuk informasi lebih lanjut, lihat Konfigurasi Daftar Putih Alamat IP.
Alamat IP di VPC tempat instans SelectDB berada telah ditambahkan ke daftar putih alamat IP kluster Elasticsearch jika mekanisme daftar putih didukung untuk kluster Elasticsearch.
Untuk mendapatkan alamat IP instans SelectDB di VPC tempat instans SelectDB berada, Anda dapat melakukan operasi yang disediakan dalam Bagaimana cara melihat alamat IP di VPC tempat instans ApsaraDB SelectDB saya berada?
Untuk mendapatkan alamat IP publik instans SelectDB, Anda dapat menjalankan perintah ping untuk mengakses titik akhir publik instans SelectDB dan mendapatkan alamat IP instans tersebut.
Anda memiliki pengetahuan dasar tentang katalog dan memahami operasi yang dapat dilakukan pada katalog. Untuk informasi lebih lanjut, lihat Danau Data.
Lingkungan contoh
Dalam contoh ini, data dimigrasikan dari indeks product_info kluster Elasticsearch ke tabel test_es2SelectDB di database SelectDB bernama es_db. Anda dapat memodifikasi parameter yang sesuai berdasarkan kebutuhan bisnis Anda. Lingkungan contoh:
Database tujuan: es_db
Tabel tujuan: test_es2SelectDB
Sumber data: indeks product_info kluster Elasticsearch
Siapkan data sumber contoh
Untuk informasi lebih lanjut, lihat Pengambilan Data melalui Kibana.
Prosedur
Hubungkan ke instans SelectDB. Untuk informasi lebih lanjut, lihat Koneksi Instans.
Buat katalog untuk kluster Elasticsearch.
CatatanSetelah katalog dibuat untuk kluster Elasticsearch, sistem secara otomatis menghasilkan database bernama
default_dbdi katalog. Semua file di kluster Elasticsearch dipetakan ke tabel di database.CREATE CATALOG es_catalog PROPERTIES ( "type"="es", "hosts"="http://127.0.0.1:9200", "user"="test_user", "password"="test_passwd", "nodes_discovery"="false" );Parameter
Parameter
Wajib
Nilai default
Deskripsi
es_catalog
Ya
Tidak ada nilai default
Nama katalog. Ubah nama berdasarkan kebutuhan bisnis Anda.
type
Ya
Tidak ada nilai default
Jenis katalog. Atur nilainya menjadi es.
hosts
Ya
Tidak ada nilai default
URL yang digunakan untuk mengakses kluster Elasticsearch. Anda dapat mengatur parameter ini ke URL Server Load Balancer (SLB) instans kluster Elasticsearch.
Format: http://<Alamat IP>:<Nomor Port>.
user
Tidak
Tidak ada nilai default
Akun yang digunakan untuk mengakses kluster Elasticsearch.
password
Tidak
Tidak ada nilai default
Kata sandi yang digunakan untuk mengakses kluster Elasticsearch.
doc_value_scan
Tidak
true
Menentukan apakah akan mengaktifkan fitur penyimpanan berorientasi kolom Elasticsearch atau Apache Lucene untuk menanyakan nilai bidang. Nilai valid:
CatatanApsaraDB for SelectDB dapat menggunakan fitur ini untuk secara otomatis memeriksa apakah penyimpanan berorientasi kolom diaktifkan untuk bidang yang akan diperiksa dan menanyakan nilai semua bidang yang memiliki penyimpanan berorientasi kolom diaktifkan. Fitur ini secara signifikan meningkatkan kinerja kueri jika Anda hanya ingin menanyakan sejumlah kecil kolom.
true
false
keyword_sniff
Tidak
true
Menentukan apakah akan mendeteksi bidang tipe TEXT di Elasticsearch dan melakukan kueri menggunakan bidang KEYWORD yang sesuai. Nilai valid:
true: Sistem mencocokkan seluruh nilai bidang tipe TEXT sebelum nilai tersebut dipecah menjadi kata kunci.
false: Sistem mencocokkan terhadap istilah individu yang dihasilkan setelah nilai bidang tipe TEXT dipecah.
nodes_discovery
Tidak
true
Menentukan apakah akan mengaktifkan fitur penemuan node Elasticsearch. Nilai valid:
true: Memungkinkan ApsaraDB for SelectDB menemukan semua node data yang tersedia di kluster Elasticsearch dan terhubung ke node data.
false: Tidak memungkinkan ApsaraDB for SelectDB mengakses semua node data yang tersedia di kluster Elasticsearch. ApsaraDB for SelectDB hanya dapat mengakses node data menggunakan URL kluster Elasticsearch.
PentingKluster Elasticsearch Alibaba Cloud hanya dapat diakses menggunakan URL. Jika sumber data Anda adalah kluster Elasticsearch Alibaba Cloud, Anda harus mengatur parameter ini ke false.
mapping_es_id
Tidak
false
Menentukan apakah akan memetakan bidang
_idyang ditentukan sebagai kunci utama di indeks Elasticsearch. Nilai valid: Jika kunci utama indeks secara otomatis ditentukan oleh Elasticsearch, Anda harus mengatur parameter ini ke true.CatatanJika Anda tidak menentukan bidang
_idsebagai kunci utama, Elasticsearch memberikan kunci utama unik global_iduntuk setiap file.true: Memetakan bidang. Dalam hal ini, nilai bidang dapat diperiksa.
false: Tidak memetakan bidang. Dalam hal ini, nilai bidang tidak dapat diperiksa.
like_push_down
Tidak
true
Menentukan apakah akan mengonversi kueri LIKE ke kueri wildcard dan mendorongnya ke kluster Elasticsearch. Nilai valid:
true: Mengonversi kueri LIKE ke kueri wildcard.
CatatanIni dapat meningkatkan konsumsi CPU kluster Elasticsearch dan mengurangi kinerja kueri dalam skenario tertentu.
Anda dapat mengatur parameter ini ke true jika Anda memprioritaskan tingkat recall tinggi daripada akurasi tinggi.
false: Tidak mengonversi kueri LIKE ke kueri wildcard.
include_hidden_index
Tidak
false
Menentukan apakah akan menyertakan indeks tersembunyi dalam kondisi kueri. Nilai valid:
false
true
Kueri katalog.
SHOW CATALOGS; --Periksa apakah katalog telah dibuat.Output berikut dikembalikan:
+--------------+--------------+----------+-----------+-------------------------+---------------------+------------------------+ | 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 | +--------------+--------------+----------+-----------+-------------------------+---------------------+------------------------+Opsional. Beralih ke katalog eksternal es_catalog.
Anda dapat menanyakan dan mengakses data di katalog eksternal es_catalog dengan cara yang sama seperti Anda menanyakan dan mengakses data di katalog internal. Untuk informasi lebih lanjut tentang kueri, lihat bagian "Kueri Data dari Sumber Data Elasticsearch" topik Sumber Data Elasticsearch.
CatatanApsaraDB for SelectDB hanya dapat membaca data di katalog eksternal.
SWITCH es_catalog;Opsional. Beralih ke katalog internal.
Jika Anda tidak melakukan Langkah 4, lewati langkah ini.
SWITCH internal;Opsional. Buat database tujuan.
Jika Anda telah membuat database tujuan, lewati langkah ini.
CREATE database es_db;Beralih ke database tujuan.
USE es_db;Buat tabel tujuan.
Jika Anda telah membuat tabel tujuan, periksa apakah tipe data kolom di tabel tujuan dipetakan ke kolom di tabel sumber kluster Elasticsearch.Pemetaan Tipe Kolom
Jika Anda belum membuat tabel tujuan, pastikan bahwa tipe data kolom di tabel tujuan dipetakan ke kolom di tabel sumber kluster Elasticsearch. Untuk informasi lebih lanjut tentang pemetaan tipe data, lihat bagian "Pemetaan Tipe Kolom" topik Sumber Data Elasticsearch.
CREATE TABLE test_Es2SelectDB ( `annual_rate` varchar(200), `describe` text, `productName` varchar(200) ) DISTRIBUTED BY HASH(productName) BUCKETS 4 PROPERTIES("replication_num" = "1");Migrasikan data.
INSERT INTO test_Es2SelectDB SELECT * FROM es_catalog.default_db.product_info;Kueri data yang diimpor di tabel tujuan.
SELECT * FROM test_Es2SelectDB;
Migrasi data inkremental.
Dalam lingkungan produksi aktual, data Elasticsearch terutama dibagi menjadi data offline dan data inkremental. Untuk memigrasikan data inkremental, Anda dapat merujuk pada solusi migrasi berikut:
Untuk memigrasikan log, jika Anda ingin menyimpan hanya log terbaru untuk analisis data, Anda dapat menulis data log ke kluster Elasticsearch dan instans SelectDB untuk mengumpulkan data log hingga jumlah data log cukup untuk analisis.
Untuk menanyakan data inkremental, Anda dapat menggunakan model kunci unik yang disediakan oleh SelectDB untuk menulis data inkremental ke kluster Elasticsearch dan instans SelectDB. Anda dapat memigrasikan data historis dengan cara yang sama seperti Anda memigrasikan data offline. Jika data historis dan data inkremental diduplikasi selama migrasi, model kunci unik secara otomatis menghapus duplikat berdasarkan kunci utama untuk memastikan keunikan data.
Kompatibilitas dengan ELK
SelectDB menyediakan plugin Filebeat dan Logstash yang disesuaikan dan ditingkatkan untuk mengumpulkan dan memproses data log secara efisien. Selain itu, Anda dapat mengumpulkan data log dengan cara mengimpor data. Untuk informasi lebih lanjut, lihat topik berikut: