全部产品
Search
文档中心

Elasticsearch:Gunakan API reindex untuk memigrasikan data dalam indeks multi-tipe versi sebelumnya

更新时间:Jul 02, 2025

Topik ini menjelaskan cara menggunakan API reindex untuk memigrasikan data dari indeks multi-tipe ke indeks single-tipe. Indeks multi-tipe berada pada kluster Alibaba Cloud Elasticsearch V5.X, sedangkan indeks single-tipe berada pada kluster Alibaba Cloud Elasticsearch V6.X.

Batasan

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 melakukan operasi tersebut. Tabel berikut menyediakan solusi migrasi data untuk berbagai skenario.

Catatan

Kluster Alibaba Cloud Elasticsearch yang dibuat sebelum Oktober 2020 menggunakan arsitektur jaringan lama, sedangkan kluster yang dibuat pada atau setelah Oktober 2020 menggunakan arsitektur jaringan baru.

Skenario

Struktur Jaringan

Solusi

Migrasikan data antara kluster Alibaba Cloud Elasticsearch

Kedua kluster menggunakan struktur jaringan lama.

API reindex. Untuk informasi lebih lanjut, lihat Gunakan API reindex untuk memigrasikan data antara kluster Alibaba Cloud Elasticsearch.

Salah satu kluster menggunakan struktur jaringan lama.

Catatan

Kluster lain dapat menggunakan struktur jaringan lama atau baru.

Migrasikan data dari kluster Elasticsearch mandiri yang berjalan pada Instance ECS ke kluster Alibaba Cloud Elasticsearch

Kluster Alibaba Cloud Elasticsearch menggunakan struktur jaringan lama.

API reindex. Untuk informasi lebih lanjut, lihat Gunakan API reindex untuk memigrasikan data dari kluster Elasticsearch mandiri ke kluster Alibaba Cloud Elasticsearch.

Kluster Alibaba Cloud Elasticsearch menggunakan struktur jaringan baru.

API reindex. Untuk informasi lebih lanjut, lihat Migrasikan data dari kluster Elasticsearch mandiri ke kluster Alibaba Cloud Elasticsearch yang menggunakan struktur jaringan baru.

Prosedur

  1. Persiapkan

    Buat kluster Elasticsearch V5.X, kluster Elasticsearch V6.X, dan kluster Logstash di virtual private cloud (VPC) yang sama.

    • Kluster Elasticsearch digunakan untuk menyimpan data indeks.

    • Kluster Logstash digunakan untuk memigrasikan data yang diproses melalui pipeline.

  2. Langkah 1: Konversikan indeks multi-tipe menjadi satu atau beberapa indeks single-tipe

    Gunakan API reindex untuk mengonversikan indeks multi-tipe pada kluster Elasticsearch V5.X menjadi satu atau beberapa indeks single-tipe. Anda dapat menggunakan salah satu metode berikut:

    • Gabungkan tipe: Panggil API reindex dengan kondisi skrip tertentu untuk menggabungkan tipe indeks.

    • Pisahkan indeks: Panggil API reindex untuk membagi indeks menjadi beberapa indeks. Masing-masing indeks hanya memiliki satu tipe.

  3. Langkah 2: Gunakan Logstash untuk memigrasikan data

    Gunakan kluster Logstash untuk memigrasikan data indeks yang telah diproses ke kluster Elasticsearch V6.X.

  4. Langkah 3: Lihat hasil migrasi data

    Lihat data yang dimigrasikan di konsol Kibana.

Persiapkan

  1. Buat kluster Elasticsearch V5.5.3 dan kluster Elasticsearch V6.7.0. Kemudian, buat indeks multi-tipe pada kluster Elasticsearch V5.5.3 dan masukkan data ke dalam indeks tersebut.

    Untuk informasi lebih lanjut tentang cara membuat kluster Elasticsearch, lihat Buat kluster Alibaba Cloud Elasticsearch.

  2. Buat kluster Logstash di VPC tempat kluster Elasticsearch berada.

    Untuk informasi lebih lanjut, lihat Langkah 1: Buat kluster Logstash.

Langkah 1: Konversikan indeks multi-tipe menjadi satu atau beberapa indeks single-tipe

Dalam langkah-langkah berikut, tipe indeks digabungkan untuk mengonversikan indeks menjadi satu indeks single-tipe.

  1. Aktifkan fitur Auto Indexing untuk kluster Elasticsearch V5.5.3.

    1. Masuk ke konsol Elasticsearch.

    2. Di panel navigasi sisi kiri, klik Elasticsearch Clusters.

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

    4. Pada halaman Elasticsearch Clusters, temukan kluster Elasticsearch V5.5.3 dan klik ID-nya.

    5. Di panel navigasi sisi kiri halaman yang muncul, klik Cluster Configuration.

    6. Klik Modify Configuration di sebelah kanan YML File Configuration.

    7. Di panel YML File Configuration, atur Auto Indexing ke Enable.Enable the Auto Indexing feature

      Peringatan

      Operasi ini akan me-restart kluster. Oleh karena itu, sebelum Anda mengubah nilai Auto Indexing, pastikan bahwa restart tidak memengaruhi layanan Anda.

    8. Pilih This operation will restart the cluster. Continue? dan klik OK.

  2. Masuk ke konsol Kibana kluster Elasticsearch.

    Untuk informasi lebih lanjut, lihat Masuk ke konsol Kibana.

  3. Di panel navigasi sisi kiri, klik Dev Tools.

  4. Pada tab Console halaman yang muncul, jalankan perintah berikut untuk menggabungkan tipe indeks:

    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"
      }
    }

    Dalam contoh ini, bidang tipe kustom ditambahkan untuk indeks new1. ctx._source.type menentukan bidang type kustom, dan bidang ini diatur ke nilai parameter _type asli. Selain itu, _id dari indeks new1 mencakup _type-_id. Ini mencegah dokumen dari tipe berbeda memiliki ID yang sama.

  5. Jalankan perintah GET new1/_mapping untuk melihat pemetaan setelah penggabungan.

  6. Jalankan perintah berikut untuk melihat data di indeks baru dengan tipe digabungkan:

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

Dalam langkah-langkah berikut, indeks multi-tipe dibagi menjadi beberapa indeks single-tipe.

  1. Pada tab Console, jalankan perintah berikut untuk membagi indeks multi-tipe menjadi beberapa indeks single-tipe:

    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"
      }
    }

    Dalam contoh ini, indeks twitter dibagi menjadi indeks twitter_tweet dan twitter_user berdasarkan tipe.

  2. Jalankan perintah berikut untuk melihat data di indeks baru:

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

Langkah 2: Gunakan Logstash untuk memigrasikan data

  1. Pergi ke halaman Kluster Logstash di konsol Alibaba Cloud Elasticsearch.

  2. Navigasikan ke kluster yang diinginkan.

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

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

  3. Di panel navigasi sisi kiri halaman yang muncul, klik Pipelines.

  4. Pada halaman Pipeline, klik Create Pipeline.

  5. Dalam wizard Create, masukkan ID pipeline dan konfigurasikan pipeline.

    Dalam contoh ini, konfigurasi berikut digunakan untuk 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"
      }
    }

    Untuk informasi lebih lanjut, lihat File konfigurasi Logstash.

  6. Klik Next untuk mengonfigurasi parameter pipeline.

    管道参数配置

    Parameter

    Deskripsi

    Pipeline Workers

    Jumlah thread pekerja yang menjalankan filter dan plug-in output pipeline secara paralel. Jika terjadi backlog event atau beberapa sumber daya CPU tidak digunakan, kami sarankan Anda meningkatkan jumlah thread untuk memaksimalkan pemanfaatan CPU. Nilai default parameter ini adalah jumlah vCPU.

    Pipeline Batch Size

    Jumlah maksimum event yang dapat dikumpulkan oleh satu thread pekerja dari plug-in input sebelum mencoba menjalankan filter dan plug-in output. Jika Anda mengatur parameter ini ke nilai besar, satu thread pekerja dapat mengumpulkan lebih banyak event tetapi menggunakan memori lebih besar. Jika Anda ingin memastikan bahwa thread pekerja memiliki memori cukup untuk mengumpulkan lebih banyak event, tentukan variabel LS_HEAP_SIZE untuk meningkatkan ukuran heap Java virtual machine (JVM). Nilai default: 125.

    Pipeline Batch Delay

    Waktu tunggu untuk sebuah event. Waktu ini terjadi sebelum Anda menetapkan batch kecil ke thread pekerja pipeline dan setelah Anda membuat tugas batch untuk event pipeline. Nilai default: 50. Unit: milidetik.

    Queue Type

    Model antrian internal untuk menyangga event. Nilai valid:

    • MEMORY: antrian berbasis memori tradisional. Ini adalah nilai default.

    • PERSISTED: antrian berbasis disk ACKed, yaitu antrian persisten.

    Queue Max Bytes

    Ukuran data maksimum untuk antrian. Unit: MB. Nilai valid: bilangan bulat mulai dari 1 hingga 2<sup>53</sup> - 1. Nilai default: 1024.

    Catatan

    Nilai harus kurang dari kapasitas total disk Anda.

    Queue Checkpoint Writes

    Jumlah maksimum event yang ditulis sebelum checkpoint diberlakukan ketika antrian persisten diaktifkan. Nilai 0 menunjukkan tidak ada batasan. Nilai default: 1024.

    Peringatan

    Setelah Anda mengonfigurasi parameter, Anda harus menyimpanpengaturan dan menerapkan pipeline. Ini memicu restart kluster Logstash. Sebelum melanjutkan, pastikan bahwa restart tidak memengaruhi bisnis Anda.

  7. Klik Save atau Save and Deploy.

    • Save: Setelah mengklik tombol ini, sistem akan menyimpan pengaturan pipeline dan memicu perubahan kluster. Namun, pengaturan tidak langsung berlaku. Setelah mengklik Simpan, halaman Pipelines akan muncul. Pada halaman Pipelines, temukan pipeline yang dibuat dan klik Deploy Now di kolom Actions. Kemudian, sistem akan me-restart kluster Logstash untuk membuat pengaturan berlaku.

    • Save and Deploy: Setelah mengklik tombol ini, sistem akan me-restart kluster Logstash untuk membuat pengaturan berlaku.

Langkah 3: Lihat hasil migrasi data

  1. Masuk ke konsol Kibana kluster Elasticsearch V6.7.0.

    Untuk informasi lebih lanjut, lihat Masuk ke konsol Kibana.

  2. Di panel navigasi sisi kiri, klik Dev Tools.

  3. Pada tab Console halaman yang muncul, jalankan perintah berikut untuk melihat indeks yang menyimpan data yang dimigrasikan:

    GET _cat/indices?v