Reindex API menyalin dokumen dari indeks sumber ke indeks tujuan. Anda dapat menyalin semua dokumen atau hanya yang sesuai dengan kueri tertentu. Proses ini dapat dilakukan dalam satu kluster atau antar kluster berbeda. Topik ini menjelaskan cara menggunakan Reindex API untuk memigrasi data dari satu kluster ke kluster lain.
Batasan
Kedua kluster harus berada di wilayah dan zona ketersediaan yang sama.
Mode management dan penyebaran: Anda dapat memigrasi data dari kluster v2 ke kluster v3, antara dua kluster v2, atau antara dua kluster v3.
Kluster memiliki dua mode management dan penyebaran: Cloud-native New Management (v3) dan Basic Management (v2). Anda dapat melihat mode management dan penyebaran kluster Anda di halaman informasinya di Konsol.
Versi kluster: Migrasi data didukung antara kluster dengan versi utama yang sama, misalnya dari versi minor yang lebih rendah ke versi minor yang lebih tinggi. Migrasi data antar versi utama, seperti dari 7.7.1 ke 8.15.1, tidak disarankan.
Prasyarat
Dalam contoh ini, kami akan memigrasi data dari ES_2 ke ES_1 menggunakan Reindex API. Sebelum memulai, lengkapi persiapan berikut.
Siapkan data uji
Di ES_2, buat indeks dan masukkan data uji:
PUT /product_info { "settings": { "number_of_shards": 5, "number_of_replicas": 1 }, "mappings": { "properties": { "productName": { "type": "text", "analyzer": "ik_smart" }, "annual_rate":{ "type":"keyword" }, "describe": { "type": "text", "analyzer": "ik_smart" } } } }Perintah ini membuat indeks bernama product_info yang berisi bidang productName, annual_rate, dan describe. Jika berhasil, permintaan mengembalikan hasil berikut.
{ "acknowledged" : true, "shards_acknowledged" : true, "index" : "product_info" }Masukkan enam dokumen uji:
POST /product_info/_bulk {"index":{}} {"productName":"Financial Product A","annual_rate":"3.2200%","describe":"A 180-day fixed-term product with a minimum investment of 20,000. Stable returns with optional message notifications."} {"index":{}} {"productName":"Financial Product B","annual_rate":"3.1100%","describe":"A 90-day regular investment product with a minimum investment of 10,000. Daily profit notifications are sent."} {"index":{}} {"productName":"Financial Product C","annual_rate":"3.3500%","describe":"A 270-day regular investment product with a minimum investment of 40,000. Daily profit notifications are sent."} {"index":{}} {"productName":"Financial Product D","annual_rate":"3.1200%","describe":"A 90-day regular investment product with a minimum investment of 12,000. Daily profit notifications are sent."} {"index":{}} {"productName":"Financial Product E","annual_rate":"3.0100%","describe":"A recommended 30-day regular investment product with a minimum investment of 8,000. Daily profit notifications are sent."} {"index":{}} {"productName":"Financial Product F","annual_rate":"2.7500%","describe":"A popular 3-day short-term product with no fees and a minimum investment of 500. Profit notifications are sent via SMS."}Di ES_1, buat indeks untuk menyimpan data yang dimigrasi dari ES_2:
PUT dest { "settings": { "number_of_shards": 5, "number_of_replicas": 1 } }
Koneksi privat melalui NLB dan PrivateLink
Untuk meningkatkan keamanan kluster, kluster dalam VPC yang sama atau VPC berbeda terisolasi secara jaringan. Anda harus menggunakan NLB dan PrivateLink untuk membuat koneksi privat (koneksi VPC) antar kluster.
Seperti ditunjukkan pada gambar berikut, kedua kluster ES ditempatkan di VPC yang sama. Layanan titik akhir dibuat di VPC pengguna. Kemudian, koneksi privat dikonfigurasi di ES_1 untuk mendapatkan titik akhir. Terakhir, titik akhir tersebut dikaitkan dengan layanan titik akhir guna membuat koneksi privat antara kedua kluster.
Layanan titik akhir adalah layanan yang dapat diakses secara privat oleh VPC lain dengan membuat titik akhir. Anda harus membuat sumber daya layanan terkait secara manual.
Titik akhir dikaitkan dengan layanan titik akhir dan menyediakan koneksi jaringan pribadi untuk mengakses layanan eksternal. Saat Anda mengonfigurasi koneksi privat untuk instans Alibaba Cloud ES, titik akhir secara otomatis dibuat di lingkungan jaringan tempat kluster ES berada.
Untuk langkah-langkah konfigurasi detail, lihat Membuat koneksi privat antar kluster Alibaba Cloud ES menggunakan NLB dan PrivateLink. Anda harus menyelesaikan Langkah 1, Langkah 2, dan Langkah 3.
Di halaman Security configuration pada instans ES_1, pada bagian Cluster network settings, klik Modify di sebelah kanan Configure instance private connection. Di panel Configure instance private connection, Anda dapat melihat ID titik akhir, ID layanan titik akhir, dan status koneksi. Saat status koneksi titik akhir adalah Terhubung, kluster ES_1 dan ES_2 dapat berkomunikasi melalui alamat IP privat mereka.
Konfigurasikan daftar putih Reindex API
Untuk memastikan migrasi data aman antar kluster, Anda harus menambahkan alamat dan port koneksi privat kluster ES_2 ke daftar putih Reindex API kluster ES_1.
Buka halaman untuk ES_1 dan klik Edit di sebelah Configure Private Connection. Di panel samping Configure Private Connection, klik Endpoint ID yang dituju.
Untuk menambahkan koneksi baru, klik + Add Private Connection di bagian bawah panel samping Configure instance private connection.
Di Konsol VPC, pada tab Endpoint Connections, klik ikon
di sebelah ID titik akhir untuk melihat nama domain-nya.PentingAnda harus menghapus identifikasi zona ketersediaan dari nama domain sebelum menambahkannya ke daftar putih Reindex API.
Misalnya, jika nama domain lengkapnya adalah "ep-bp1****************-cn-hangzhou-i.epsrv-bp1****************.cn-hangzhou.privatelink.aliyuncs.com", hapus identifikasi zona ketersediaan "-cn-hangzhou-i" sehingga nama domain akhir menjadi: "ep-bp1****************.epsrv-bp1****************.cn-hangzhou.privatelink.aliyuncs.com".
Di file YML untuk ES_1, konfigurasikan daftar putih Reindex API. Entri daftar putih harus berupa nama domain dan port titik akhir.
reindex: remote: whitelist: >- ep-bp1bp1****************.epsrv-bp1****************.cn-hangzhou.privatelink.aliyuncs.com:9200Di halaman Konfigurasi kluster ES, klik Modify configuration di sebelah kanan YML configuration. Di editor YAML Other configure pada panel, tambahkan konfigurasi daftar putih tersebut.
Panggil Reindex API
Login ke Konsol Kibana untuk ES_1.
Di Dev Tools > Console, panggil Reindex API untuk memigrasi data.
POST _reindex { "source": { "remote": { "host": "http://ep-bp1bp1****************.epsrv-bp1****************.cn-hangzhou.privatelink.aliyuncs.com:9200", "username": "elastic", "password": "xxx-xxxx123!" }, "index": "product_info", "query": { "match": { "productName": "Financial Product" } } }, "dest": { "index": "dest" } }Kategori
Parameter
Deskripsi
source
remote
Kluster remote. Dalam contoh ini, ES_2.
host
Alamat akses kluster ES_2. Termasuk:
Protokol. Anda dapat menemukannya di halaman Basic Information kluster.
PentingUntuk keamanan, gunakan protokol HTTPS agar password tidak dikirim dalam teks biasa saat menghubungkan ke kluster. Untuk mengaktifkan protokol HTTPS, lihat protokol HTTPS.
Nama domain: Alamat koneksi privat kluster ES_2. Harus sama dengan nama domain yang dikonfigurasi di daftar putih Reindex.
Port: Tetap pada 9200.
username
Username default untuk kluster adalah
elastic.password
Password untuk user yang ditentukan.
Password ditetapkan saat Anda membuat kluster. Jika lupa, Anda dapat mengatur ulang password.
index
Indeks sumber di kluster remote.
query
Kueri yang menentukan dokumen mana yang akan dimigrasi.
Dalam contoh ini, dokumen yang bidang
productName-nya mengandung "Financial Product" dimigrasi dari indeks kluster ES_2 ke kluster ES_1.dest
index
Indeks tujuan di kluster target untuk data yang dimigrasi.
Jika berhasil, permintaan mengembalikan hasil berikut:
{ "took": 211, "timed_out": false, "total": 6, "updated": 6, "created": 0, "deleted": 0, "batches": 1, "version_conflicts": 0, "noops": 0, "retries": { "bulk": 0, "search": 0 }, "throttled_millis": 0, "requests_per_second": -1, "throttled_until_millis": 0, "failures": [] }Panggil API
_searchuntuk melihat hasil migrasi.GET dest/_searchHasil yang diharapkan:
{ "took": 6, "timed_out": false, "_shards": { "total": 5, "successful": 5, "skipped": 0, "failed": 0 }, "hits": { "total": { "value": 6, "relation": "eq" }, "max_score": 1, "hits": [ { "_index": "dest", "_id": "n9kyqpcBCRuDZhswJCpH", "_score": 1, "_source": { "productName": "Financial Product D", "annual_rate": "3.1200%", "describe": "A 90-day regular investment product with a minimum investment of 12,000. Daily profit notifications are sent." } }, { "_index": "dest", "_id": "nNkyqpcBCRuDZhswJCpG", "_score": 1, "_source": { "productName": "Financial Product A", "annual_rate": "3.2200%", "describe": "A 180-day fixed-term product with a minimum investment of 20,000. Stable returns with optional message notifications." } }, { "_index": "dest", "_id": "ndkyqpcBCRuDZhswJCpG", "_score": 1, "_source": { "productName": "Financial Product B", "annual_rate": "3.1100%", "describe": "A 90-day regular investment product with a minimum investment of 10,000. Daily profit notifications are sent." } }, { "_index": "dest", "_id": "ntkyqpcBCRuDZhswJCpH", "_score": 1, "_source": { "productName": "Financial Product C", "annual_rate": "3.3500%", "describe": "A 270-day regular investment product with a minimum investment of 40,000. Daily profit notifications are sent." } }, { "_index": "dest", "_id": "oNkyqpcBCRuDZhswJCpH", "_score": 1, "_source": { "productName": "Financial Product E", "annual_rate": "3.0100%", "describe": "A recommended 30-day regular investment product with a minimum investment of 8,000. Daily profit notifications are sent." } }, { "_index": "dest", "_id": "odkyqpcBCRuDZhswJCpH", "_score": 1, "_source": { "productName": "Financial Product F", "annual_rate": "2.7500%", "describe": "A popular 3-day short-term product with no fees and a minimum investment of 500. Profit notifications are sent via SMS." } } ] } }