All Products
Search
Document Center

Elasticsearch:Menggunakan Reindex API untuk migrasi data multi-type

Last Updated:Jun 17, 2026

Elasticsearch 6.x tidak lagi mendukung multiple types dalam satu indeks. Gunakan Reindex API untuk mengonversi indeks multi-type pada instans 5.x menjadi indeks single-type, lalu gunakan Logstash untuk memigrasikan data tersebut ke instans 6.x.

Pertimbangan

Alibaba Cloud ES menyediakan dua mode penyebaran: arsitektur basic management (v2) dan arsitektur cloud-native new management (v3). Anda dapat mengidentifikasi mode penyebaran instans Anda di bagian Informasi Dasar.

image

Untuk kluster yang menggunakan arsitektur cloud-native new management (v3), reindexing lintas kluster memerlukan PrivateLink untuk membuat koneksi peering jaringan pribadi. Lihat tabel berikut dan pilih solusi berdasarkan skenario bisnis Anda.

Skenario

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 lebih lanjut, 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 lebih lanjut, 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 lebih lanjut, lihat Migrasi data Elasticsearch self-managed melalui koneksi pribadi.

Alur Kerja

  1. Prasyarat

    Siapkan instans Alibaba Cloud Elasticsearch dan Logstash. Pastikan keduanya berada dalam Virtual Private Cloud (VPC) yang sama.

    • Instans Alibaba Cloud Elasticsearch: Digunakan untuk menyimpan data indeks.

    • Instans Alibaba Cloud Logstash: Digunakan untuk memigrasikan data yang telah diproses menggunakan pipeline.

  2. Langkah 1: Konversi tipe indeks

    Gunakan Reindex API untuk mengonversi indeks multi-type pada instans Alibaba Cloud Elasticsearch 5.x menjadi indeks single-type. Metode berikut didukung:

    • Gabung tipe: Gunakan skrip reindex untuk menggabungkan data dari indeks multi-type pada instans Elasticsearch 5.x ke dalam indeks single-type baru.

    • Pisah tipe: Gunakan Reindex API untuk memisahkan data dari indeks multi-type pada instans Elasticsearch 5.x menjadi beberapa indeks single-type berdasarkan tipe aslinya.

  3. Langkah 2: Migrasi data menggunakan Logstash

    Gunakan instans Alibaba Cloud Logstash untuk memigrasikan data indeks yang telah diproses ke instans Elasticsearch 6.x.

  4. Langkah 3: Verifikasi migrasi data

    Lihat indeks yang telah dimigrasikan di Kibana.

Prasyarat

  1. 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.

  2. Buat instans Alibaba Cloud Logstash dalam Virtual Private Cloud yang sama dengan instans Alibaba Cloud Elasticsearch Anda.

    Untuk informasi lebih lanjut, lihat Langkah 2: Buat instans Alibaba Cloud Logstash.

Langkah 1: Konversi tipe indeks

Langkah-langkah berikut menggabungkan tipe untuk mengonsolidasikan data dari indeks multi-type ke dalam indeks single-type.

  1. Aktifkan pembuatan indeks otomatis untuk instans Elasticsearch Anda.

    1. Masuk ke Konsol Alibaba Cloud Elasticsearch.

    2. Di panel navigasi kiri, klik Elasticsearch Clusters.

    3. Di bilah navigasi atas, pilih kelompok sumber daya dan wilayah.

    4. Di daftar instans, klik ID instans versi lama.

    5. Di panel navigasi kiri, klik Cluster Configuration.

    6. Klik YML File Configuration di samping Modify Configuration.

    7. Pada halaman YML File Configuration, atur Auto Indexing ke Enable.允许自动创建索引

      Peringatan

      Mengubah pengaturan Auto Indexing akan merestart instans. Pastikan tindakan ini tidak berdampak buruk terhadap layanan Anda sebelum melanjutkan.

    8. Pilih kotak centang This operation restarts the instance. Confirm to proceed., lalu klik OK.

  2. Masuk ke konsol Kibana dari instans Elasticsearch versi lama.

    Untuk informasi lebih lanjut, lihat Masuk ke konsol Kibana.

  3. 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"}
  4. 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 di atas, tipe kustom ditentukan menggunakan ctx._source.type. Ini menambahkan bidang type ke indeks new1 dan mengatur nilainya ke nilai _type asli. Selain itu, _id pada indeks new1 dibentuk dari _type-_id untuk mencegah konflik jika dokumen dari tipe berbeda memiliki ID yang sama.

  5. Jalankan perintah GET new1/_mapping untuk melihat struktur Pemetaan yang digabungkan.

  6. Jalankan perintah berikut untuk melihat data dalam indeks yang digabungkan.

    GET new1/_search
    {
       "query":{
         "match_all":{
          }
      }
    }

Langkah-langkah berikut memisahkan tipe untuk melakukan pengindeksan ulang indeks multi-type menjadi beberapa indeks single-type.

  1. 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 di atas memisahkan indeks twitter menjadi indeks twitter_tweet dan twitter_user berdasarkan tipe yang berbeda.

  2. Jalankan perintah berikut untuk melihat data dalam indeks yang dipisahkan.

    GET twitter_tweet/_search
    {
       "query":{
         "match_all":{
    
          }
      }
    }
    GET twitter_user/_search
    {
       "query":{
         "match_all":{
    
          }
      }
    }

Langkah 2: Migrasi data menggunakan Logstash

  1. Buka halaman Logstash Clusters.

  2. Navigasi ke kluster target.

    1. Di bilah navigasi atas, pilih wilayah tempat kluster berada.

    2. Di halaman Logstash Clusters, temukan kluster tersebut dan klik ID-nya.

  3. Di panel navigasi kiri, klik Pipelines.

  4. Klik Create Pipeline.

  5. 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 di atas, parameter index pada bagian output diatur ke nilai tetap test. Ganti dengan nama indeks target aktual sesuai kebutuhan.

    Untuk informasi lebih lanjut tentang parameter konfigurasi pipeline, lihat Referensi file konfigurasi Logstash.

  6. 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 yang lebih besar (LS_HEAP_SIZE). 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. Nilai yang valid:

    • MEMORY: Default. Menggunakan antrian berbasis memori.

    • PERSISTED: Antrian persisten berbasis disk.

    Queue Max Bytes

    Jumlah maksimum data yang dapat disimpan oleh antrian, dalam MB. Nilainya harus berupa bilangan bulat dari 1 hingga 2<sup>53</sup>-1. Nilai default: 1024.

    Catatan

    Pastikan nilai ini lebih kecil dari kapasitas disk total Anda.

    Queue Checkpoint Writes

    Jumlah maksimum event yang ditulis sebelum checkpoint dipaksakan (hanya untuk antrian persisten). 0 berarti tanpa batas. Nilai default: 1024.

    Peringatan

    Menyimpan dan menerapkan konfigurasi akan memicu restart instans. Lanjutkan hanya jika hal ini tidak berdampak pada bisnis Anda.

  7. 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

  1. Masuk ke konsol Kibana dari instans Elasticsearch versi baru.

    Untuk informasi lebih lanjut, lihat Masuk ke konsol Kibana.

  2. Di panel navigasi kiri, klik Dev Tools.

  3. Di Console, jalankan perintah berikut untuk melihat indeks yang telah dimigrasikan.

    GET _cat/indices?v