Elasticsearch 6.x tidak lagi mendukung multiple types dalam satu indeks. Anda dapat menggunakan Reindex API untuk mengonversi indeks multi-type pada instans 5.x menjadi indeks single-type, lalu memigrasikan datanya ke instans 6.x dengan Logstash.
Pertimbangan
Alibaba Cloud ES memiliki dua mode penyebaran: arsitektur basic management (v2) dan arsitektur cloud-native new management (v3). Anda dapat memeriksa mode penyebaran instans Anda di halaman Informasi Dasar.

Untuk kluster yang menggunakan arsitektur cloud-native new management (v3), reindexing antar-kluster memerlukan koneksi jaringan pribadi berbasis PrivateLink. Pilih solusi dari tabel berikut sesuai skenario Anda.
|
Scenario |
Arsitektur jaringan kluster ES |
Solusi |
|
Migrasi data antar-kluster Alibaba Cloud ES |
Kedua kluster ES dibuat dengan arsitektur basic management (v2). |
reindex API. Untuk informasi selengkapnya, lihat Gunakan reindex API untuk migrasi data antar-kluster Alibaba Cloud ES. |
|
Salah satu kluster ES dibuat dengan arsitektur cloud-native new management (v3). Catatan
Kluster ES lainnya dapat dibuat dengan arsitektur cloud-native new management (v3) atau basic management (v2). |
|
|
|
Migrasi data dari kluster ES self-managed pada Instance ECS ke kluster Alibaba Cloud ES |
Kluster Alibaba Cloud ES dibuat dengan arsitektur basic management (v2). |
reindex API. Untuk informasi selengkapnya, lihat Migrasi data dari kluster Elasticsearch self-managed ke Alibaba Cloud Elasticsearch menggunakan reindex. |
|
Kluster Alibaba Cloud ES dibuat dengan arsitektur cloud-native new management (v3). |
reindex API. Untuk informasi selengkapnya, lihat Migrasi data Elasticsearch self-managed melalui koneksi pribadi. |
Alur Kerja
-
Siapkan instans Alibaba Cloud Elasticsearch dan Logstash. Pastikan keduanya berada dalam Virtual Private Cloud (VPC) yang sama.
-
Instans Alibaba Cloud Elasticsearch: Menyimpan data indeks.
-
Instans Alibaba Cloud Logstash: Memigrasikan data yang telah diproses melalui pipeline.
-
-
Langkah 1: Konversi tipe indeks
Gunakan reindex API untuk mengonversi indeks multi-type pada instans Alibaba Cloud Elasticsearch 5.x menjadi indeks single-type. Tersedia dua metode:
-
Gabung tipe: Gabungkan data dari indeks multi-type pada instans Elasticsearch 5.x ke dalam indeks single-type baru menggunakan skrip reindex.
-
Pisahkan tipe: Pisahkan data dari indeks multi-type pada instans Elasticsearch 5.x menjadi beberapa indeks single-type berdasarkan tipe aslinya menggunakan reindex API.
-
-
Langkah 2: Migrasi data menggunakan Logstash
Migrasikan data indeks yang telah diproses ke instans Elasticsearch 6.x menggunakan Alibaba Cloud Logstash.
-
Langkah 3: Verifikasi migrasi data
Lihat indeks yang telah dimigrasikan di Kibana.
Prasyarat
-
Siapkan instans Alibaba Cloud Elasticsearch versi lama (5.5.3) dan versi baru (6.7.0), serta data multi-type yang akan dimigrasikan.
Untuk informasi lebih lanjut tentang cara membuat instans, lihat Buat instans Alibaba Cloud Elasticsearch.
-
Buat instans Alibaba Cloud Logstash dalam Virtual Private Cloud yang sama dengan instans Alibaba Cloud Elasticsearch Anda.
Untuk informasi selengkapnya, lihat Langkah 2: Buat instans Alibaba Cloud Logstash.
Langkah 1: Konversi tipe indeks
Langkah-langkah berikut menunjukkan cara menggabungkan tipe, yaitu mengonsolidasikan data dari indeks multi-type ke dalam satu indeks single-type.
-
Aktifkan pembuatan indeks otomatis untuk instans Elasticsearch Anda.
-
Masuk ke Konsol Alibaba Cloud Elasticsearch.
-
Di panel navigasi kiri, klik Elasticsearch Clusters.
-
Di bilah navigasi atas, pilih kelompok sumber daya dan wilayah.
-
Di daftar instans, klik ID instans versi lama.
-
Di panel navigasi kiri, klik Cluster Configuration.
-
Klik YML File Configuration di samping Modify Configuration.
-
Di halaman YML File Configuration, atur Auto Indexing ke Enable.
PeringatanMengubah pengaturan Auto Indexing akan merestart instans. Pastikan tindakan ini tidak berdampak negatif terhadap layanan Anda sebelum melanjutkan.
-
Pilih kotak centang This operation restarts the instance. Confirm to proceed., lalu klik OK.
-
-
Masuk ke konsol Kibana dari instans Elasticsearch versi lama.
Untuk informasi selengkapnya, lihat Masuk ke konsol Kibana.
-
Di panel navigasi kiri, klik Dev Tools.
Jika instans versi lama tidak berisi data indeks multi-type, jalankan perintah berikut di Console untuk membuat data uji:
PUT twitter/tweet/1 {"user": "kimchy", "message": "trying out Elasticsearch"} PUT twitter/tweet/2 {"user": "kimchy", "message": "another tweet"} PUT twitter/user/1 {"name": "kimchy", "email": "kimchy@elastic.co"} PUT twitter/user/2 {"name": "elastic", "email": "info@elastic.co"} -
Di Console, jalankan perintah berikut untuk menggabungkan data dari indeks multi-type ke dalam indeks single-type.
POST _reindex { "source": { "index": "twitter" }, "dest": { "index": "new1" }, "script": { "inline": """ ctx._id = ctx._type + "-" + ctx._id; ctx._source.type = ctx._type; ctx._type = "doc"; """, "lang": "painless" } }Pada contoh ini, ctx._source.type menambahkan bidang type ke indeks new1 dan mengatur nilainya ke _type asli. _id pada indeks new1 dibentuk sebagai _type-_id untuk mencegah konflik ID antar dokumen dari tipe berbeda.
-
Jalankan perintah
GET new1/_mappinguntuk melihat struktur Mapping yang telah digabung. -
Jalankan perintah berikut untuk melihat data dalam indeks yang telah digabung.
GET new1/_search { "query":{ "match_all":{ } } }
Langkah-langkah berikut menunjukkan cara memisahkan tipe, yaitu melakukan pengindeksan ulang indeks multi-type menjadi beberapa indeks single-type.
-
Di Console, jalankan perintah berikut untuk memisahkan indeks multi-type menjadi indeks single-type.
POST _reindex { "source": { "index": "twitter", "type": "tweet", "size": 10000 }, "dest": { "index": "twitter_tweet" } } POST _reindex { "source": { "index": "twitter", "type": "user", "size": 10000 }, "dest": { "index": "twitter_user" } }Contoh ini memisahkan indeks twitter menjadi indeks twitter_tweet dan twitter_user berdasarkan tipe yang berbeda.
-
Jalankan perintah berikut untuk melihat data dalam indeks yang telah dipisahkan.
GET twitter_tweet/_search { "query":{ "match_all":{ } } }GET twitter_user/_search { "query":{ "match_all":{ } } }
Langkah 2: Migrasi data menggunakan Logstash
Buka halaman Logstash Clusters.
Navigasi ke kluster target.
Di bilah navigasi atas, pilih wilayah tempat kluster berada.
Di halaman Logstash Clusters, temukan kluster tersebut dan klik ID-nya.
-
Di panel navigasi kiri, klik Pipelines.
-
Klik Create Pipeline.
-
Di halaman Create, masukkan Pipeline ID dan konfigurasikan pipeline.
Contoh konfigurasi pipeline:
input { elasticsearch { hosts => ["http://es-cn-0pp1f1y5g000h****.elasticsearch.aliyuncs.com:9200"] user => "elastic" index => "*" password => "your_password" docinfo => true } } filter { } output { elasticsearch { hosts => ["http://es-cn-mp91cbxsm000c****.elasticsearch.aliyuncs.com:9200"] user => "elastic" password => "your_password" index => "test" } }Pada contoh ini, parameter index di bagian output diatur ke test. Ganti dengan nama indeks target aktual Anda.
Untuk informasi selengkapnya tentang parameter konfigurasi pipeline, lihat Referensi file konfigurasi Logstash.
-
Klik Next step dan konfigurasikan parameter pipeline.
Parameter
Deskripsi
Pipeline Workers
Jumlah thread pekerja untuk tahap filter dan output. Tingkatkan nilai ini jika terjadi backlog event atau CPU kurang dimanfaatkan. Nilai default: jumlah core CPU.
Pipeline Batch Size
Jumlah maksimum event yang dikumpulkan oleh worker sebelum menjalankan filter dan output. Batch yang lebih besar meningkatkan penggunaan memori dan mungkin memerlukan ukuran heap JVM (LS_HEAP_SIZE) yang lebih besar. Nilai default: 125.
Pipeline Batch Delay
Waktu tunggu dalam milidetik sebelum mengirimkan batch yang belum penuh ke thread pekerja. Nilai default: 50 ms.
Queue Type
Model antrian internal untuk buffering event antar tahap. Nilai yang valid:
-
MEMORY: Default. Menggunakan antrian dalam memori.
-
PERSISTED: Antrian persisten berbasis disk.
Queue Max Bytes
Jumlah maksimum data yang dapat disimpan oleh antrian, dalam
MB. Nilainya harus berupa bilangan bulat dari1hingga2<sup>53</sup>-1. Nilai default:1024.CatatanPastikan nilai ini lebih kecil dari kapasitas disk total Anda.
Queue Checkpoint Writes
Jumlah maksimum event yang ditulis sebelum checkpoint dipaksakan (hanya untuk antrian persisten). Nilai 0 berarti tanpa batas. Nilai default: 1024.
PeringatanMenyimpan dan menerapkan konfigurasi akan memicu restart instans. Lanjutkan hanya jika hal ini tidak memengaruhi bisnis Anda.
-
-
Klik Save atau Save and Deploy.
-
Save: Menyimpan konfigurasi pipeline tetapi tidak menerapkannya. Setelah disimpan, Anda akan kembali ke halaman Pipelines. Di bagian Pipelines, Anda dapat mengklik Deploy Now di kolom Actions untuk merestart instans dan menerapkan konfigurasi.
-
Save and Deploy: Menyimpan dan menerapkan konfigurasi, merestart instans untuk menerapkan perubahan.
-
Langkah 3: Verifikasi migrasi data
-
Masuk ke konsol Kibana dari instans Elasticsearch versi baru.
Untuk informasi selengkapnya, lihat Masuk ke konsol Kibana.
-
Di panel navigasi kiri, klik Dev Tools.
-
Di Console, jalankan perintah berikut untuk melihat indeks yang telah dimigrasikan.
GET _cat/indices?v