Jika Anda ingin memigrasikan data antar kluster Elasticsearch di Alibaba Cloud, Anda dapat menggunakan API reindex untuk mengindeks ulang data. Topik ini menjelaskan cara menggunakan API reindex untuk memigrasikan data antar kluster Elasticsearch di Alibaba Cloud yang diterapkan dalam arsitektur jaringan asli.
Skenario
Bab ini menjelaskan penggunaan API reindex untuk migrasi data lintas kluster Elasticsearch di Alibaba Cloud. Pilih solusi yang sesuai berdasarkan data bisnis Anda dan arsitektur jaringan tempat kluster Elasticsearch diterapkan.
Anda ingin memigrasikan data antar kluster Elasticsearch.
Shard untuk indeks dalam kluster Elasticsearch didistribusikan secara tidak tepat. Sebagai contoh, volume data yang disimpan dalam indeks terlalu besar, tetapi jumlah shard untuk indeks tersebut terlalu kecil. Dalam kasus ini, Anda dapat menggunakan API reindex untuk mengindeks ulang data.
Anda ingin memodifikasi pemetaan untuk indeks yang menyimpan sejumlah besar data. Dalam kasus ini, Anda dapat menggunakan API reindex untuk menyalin data dalam indeks.
Arsitektur jaringan Alibaba Cloud Elasticsearch diperbarui pada Oktober 2020. Dalam arsitektur baru, operasi reindex lintas kluster dibatasi. Anda perlu menggunakan layanan PrivateLink untuk membuat koneksi privat antar-VPC sebelum menjalankan operasi tersebut. Tabel berikut menyediakan solusi migrasi data untuk berbagai skenario.
Kluster Elasticsearch di Alibaba Cloud yang dibuat sebelum Oktober 2020 menggunakan arsitektur jaringan asli, sedangkan kluster yang dibuat pada atau setelah Oktober 2020 menggunakan arsitektur jaringan baru.
Skenario | Struktur Jaringan | Solusi |
Migrasikan data antar kluster Elasticsearch di Alibaba Cloud | Kedua kluster menggunakan arsitektur jaringan asli. | Gunakan API reindex. Untuk informasi lebih lanjut, lihat Gunakan API reindex untuk memigrasikan data antar kluster Elasticsearch di Alibaba Cloud. |
Salah satu kluster menggunakan arsitektur jaringan asli. Catatan Kluster lainnya dapat menggunakan arsitektur jaringan asli atau baru. |
| |
Migrasikan data dari kluster Elasticsearch mandiri yang berjalan pada Instance ECS ke kluster Elasticsearch di Alibaba Cloud | Kluster Elasticsearch di Alibaba Cloud menggunakan arsitektur jaringan asli. | Gunakan API reindex. Untuk informasi lebih lanjut, lihat Gunakan API reindex untuk memigrasikan data dari kluster Elasticsearch mandiri ke kluster Elasticsearch di Alibaba Cloud. |
Kluster Elasticsearch di Alibaba Cloud menggunakan arsitektur jaringan baru. | Gunakan API reindex. Untuk informasi lebih lanjut, lihat Migrasikan data dari kluster Elasticsearch mandiri ke kluster Elasticsearch di Alibaba Cloud yang menggunakan arsitektur jaringan baru. |
Prasyarat
Dua kluster Elasticsearch di Alibaba Cloud telah dibuat dalam arsitektur jaringan asli, menggunakan virtual private cloud (VPC) dan vSwitch yang sama. Dalam contoh ini, kluster Elasticsearch V6.7.0 digunakan sebagai kluster lokal, sedangkan kluster Elasticsearch V6.3.2 digunakan sebagai kluster jarak jauh.
Data uji telah dipersiapkan.
Kluster lokal
Buat indeks tujuan dalam kluster lokal.
PUT dest { "settings": { "number_of_shards": 5, "number_of_replicas": 1 } }Kluster jarak jauh
Persiapkan data yang ingin dimigrasikan dalam kluster jarak jauh. Dalam contoh ini, data dari topik "Memulai" digunakan. Untuk informasi lebih lanjut, lihat Memulai.
PentingJika Anda ingin menggunakan kluster Elasticsearch versi 7.0 atau lebih baru sebagai kluster jarak jauh, Anda harus menetapkan tipe indeks menjadi _doc.
Prosedur
Masuk ke Konsol Elasticsearch di Alibaba Cloud.
Di panel navigasi sisi kiri, klik Elasticsearch Clusters.
Navigasikan ke kluster yang diinginkan.
Di bilah navigasi atas, pilih grup sumber daya dan wilayah tempat kluster berada.
Pada halaman Elasticsearch Clusters, temukan kluster dan klik ID-nya.
Konfigurasikan daftar putih reindex untuk kluster lokal.
Di panel navigasi sisi kiri halaman yang muncul, pilih .
Pada halaman yang muncul, klik Modify Configuration di sebelah kanan YML File Configuration.
Di panel Konfigurasi File YML, masukkan titik akhir dan nomor port kluster jarak jauh di bidang Other Configurations.
Konfigurasi daftar putih reindex bervariasi berdasarkan jumlah zona kluster jarak jauh.
Jika kluster jarak jauh adalah kluster zona tunggal, konfigurasikan daftar putih reindex dalam format <Endpoint of the remote cluster>:9200.
Contoh kode:reindex.remote.whitelist: ["es-cn-09k1rgid9000g****.elasticsearch.aliyuncs.com:9200"]Jika kluster remote merupakan kluster multi-zona, daftar putih reindex harus mencakup alamat IP dari semua node data dalam kluster dan nomor port kluster tersebut.
Contoh kode:reindex.remote.whitelist: ["10.0.xx.xx:9200","10.0.xx.xx:9200","10.0.xx.xx:9200","10.15.xx.xx:9200","10.15.xx.xx:9200","10.15.xx.xx:9200"]CatatanAnda dapat memperoleh alamat IP semua node data dalam kluster dari tab Node Visualization pada halaman Basic Information kluster. Untuk informasi lebih lanjut, lihat Lihat status kluster dan informasi node.
Untuk informasi tentang konfigurasi daftar putih reindex, lihat Konfigurasikan daftar putih reindex jarak jauh.
Pilih This operation will restart the cluster. Continue? dan klik OK.
Sistem akan me-restart kluster Elasticsearch. Anda dapat melihat kemajuan restart di kotak dialog Tugas. Setelah kluster direstart, konfigurasi selesai.
Dalam kluster lokal, panggil API reindex untuk mengindeks ulang data.
Masuk ke Konsol Kibana kluster lokal dan buka halaman utama Konsol Kibana sesuai petunjuk.
Untuk informasi lebih lanjut tentang cara masuk ke Konsol Kibana, lihat Masuk ke Konsol Kibana.
CatatanDalam contoh ini, kluster Elasticsearch V6.7.0 digunakan. Operasi pada kluster versi lain mungkin berbeda. Operasi aktual di konsol yang berlaku.
Di panel navigasi sisi kiri halaman yang muncul, klik Dev Tools.
Pada tab Console, jalankan perintah berikut untuk memanggil API reindex guna mengindeks ulang data:
POST _reindex { "source": { "remote": { "host": "http://es-cn-09k1rgid9000g****.elasticsearch.aliyuncs.com:9200", "username": "elastic", "password": "your_password" }, "index": "product_info", "query": { "match": { "productName": "Manajemen kekayaan" } } }, "dest": { "index": "dest" } }Kategori
Parameter
Deskripsi
source
host
URL yang digunakan untuk terhubung ke kluster jarak jauh. URL harus mencakup protokol, titik akhir, dan nomor port. Contoh: https://otherhost:9200. Nilai parameter host bervariasi berdasarkan jumlah zona kluster jarak jauh.
Jika kluster jarak jauh adalah kluster zona tunggal, Anda harus mengonfigurasi parameter ini dalam format http://<Titik Akhir Kluster Jarak Jauh>:9200.
CatatanAnda dapat memperoleh titik akhir pada halaman Informasi Dasar kluster jarak jauh. Untuk informasi lebih lanjut, lihat Lihat informasi dasar kluster.
Jika kluster jarak jauh adalah kluster multi-zona, Anda harus mengonfigurasi parameter ini dalam format http://<Alamat IP Node Data di Kluster Jarak Jauh>:9200.
username
Nama pengguna yang digunakan untuk terhubung ke kluster jarak jauh. Parameter ini hanya diperlukan jika otentikasi dasar perlu dilakukan pada permintaan yang dikirim ke kluster jarak jauh. Nama pengguna default yang digunakan untuk terhubung ke kluster Elasticsearch di Alibaba Cloud adalah elastic.
PentingUntuk alasan keamanan, kami sarankan Anda menggunakan HTTPS untuk mengirim permintaan jika otentikasi dasar perlu dilakukan. Jika tidak, kata sandi yang diperlukan ditransmisikan dalam teks biasa.
Untuk kluster Elasticsearch di Alibaba Cloud, Anda dapat menggunakan HTTPS dalam host hanya setelah Anda mengaktifkan protokol untuk kluster. Untuk informasi tentang cara mengaktifkan HTTPS untuk kluster Elasticsearch, lihat Aktifkan HTTPS.
password
Kata sandi yang digunakan untuk terhubung ke kluster jarak jauh. Kata sandi ditentukan saat Anda membuat kluster. Jika Anda lupa kata sandinya, Anda dapat menyetel ulang. Untuk informasi tentang prosedur dan perhatian saat menyetel ulang kata sandi, lihat Setel ulang kata sandi akses untuk kluster Elasticsearch.
index
Indeks sumber dalam kluster jarak jauh.
query
Menentukan data yang ingin Anda migrasikan. Untuk informasi lebih lanjut, lihat API Reindex.
dest
index
Indeks tujuan dalam kluster lokal.
CatatanSaat Anda mengindeks ulang data dari kluster jarak jauh, pemotongan manual dan otomatis tidak didukung untuk data tersebut. Untuk informasi lebih lanjut, lihat Pemotongan Manual dan Pemotongan Otomatis.
Jika perintah berhasil dijalankan, hasil berikut akan dikembalikan:
{ "took" : 51, "timed_out" : false, "total" : 2, "updated" : 2, "created" : 0, "deleted" : 0, "batches" : 1, "version_conflicts" : 0, "noops" : 0, "retries" : { "bulk" : 0, "search" : 0 }, "throttled_millis" : 0, "requests_per_second" : -1.0, "throttled_until_millis" : 0, "failures" : [ ] }
Jalankan perintah berikut untuk melihat data yang dimigrasikan:
GET dest/_searchJika perintah berhasil dijalankan, hasil berikut akan dikembalikan:
Kluster zona tunggal

Kluster multi-zona

Rangkuman
Konfigurasi yang diperlukan untuk migrasi data dari kluster zona tunggal serupa dengan konfigurasi untuk migrasi data dari kluster multi-zona. Tabel berikut menjelaskan perbedaan-perbedaan tersebut.
Tipe Kluster | Konfigurasi Daftar Putih Reindex | Konfigurasi Parameter Host |
Kluster zona tunggal | Titik akhir dan nomor port kluster | https://Titik Akhir Kluster:9200 |
Kluster multi-zona | Alamat IP semua node data dalam kluster dan nomor port kluster | https://Alamat IP Node Data dalam Kluster:9200 |
Informasi Tambahan
Saat menggunakan API reindex untuk mengindeks ulang data, Anda dapat menentukan ukuran batch dan periode timeout.
Ukuran Batch
Kluster Elasticsearch jarak jauh menggunakan heap untuk menyimpan data indeks. Ukuran batch default adalah 100 MB. Jika indeks dalam kluster jarak jauh berisi dokumen besar, disarankan untuk mengubah ukuran batch menjadi nilai yang lebih kecil.
Dalam contoh berikut, size diatur ke 10.
POST _reindex { "source": { "remote": { "host": "http://otherhost:9200" }, "index": "source", "size": 10, "query": { "match": { "test": "data" } } }, "dest": { "index": "dest" } }Periode Timeout
Anda dapat menggunakan socket_timeout untuk menentukan periode timeout untuk pembacaan socket. Nilai default dari socket_timeout adalah 30s. Anda juga dapat menggunakan connect_timeout untuk menentukan periode timeout untuk koneksi. Nilai default dari connect_timeout adalah 1s.
Dalam contoh berikut, socket_timeout diatur menjadi 1m, dan connect_timeout diatur menjadi 10s.
POST _reindex { "source": { "remote": { "host": "http://otherhost:9200", "socket_timeout": "1m", "connect_timeout": "10s" }, "index": "source", "query": { "match": { "test": "data" } } }, "dest": { "index": "dest" } }