全部产品
Search
文档中心

Elasticsearch:Migrasi data indeks Elasticsearch dari Amazon OpenSearch Service ke Alibaba Cloud Elasticsearch

更新时间:Jul 06, 2025

Topik ini menjelaskan cara memigrasikan data indeks Elasticsearch dari Amazon OpenSearch Service ke Alibaba Cloud Elasticsearch.

Perhatian

Solusi ini tidak terbatas pada penyedia layanan cloud tetapi bergantung pada mekanisme snapshot Elasticsearch. Sebagai contoh, Anda dapat menggunakan Layanan Migrasi Data Online yang disediakan oleh Alibaba Cloud untuk memigrasikan data Elasticsearch dalam snapshot dari Amazon OpenSearch Service atau Tencent Cloud Object Storage (COS) ke Alibaba Cloud Object Storage Service (OSS). Kemudian, pulihkan data ke kluster tujuan. Untuk informasi tentang cara memigrasikan data ke Alibaba Cloud OSS, lihat Migrasi data. Untuk informasi tentang cara memulihkan data dalam snapshot, lihat Buat snapshot manual dan pulihkan data dari snapshot manual.

Versi kluster Elasticsearch tujuan harus sama dengan atau lebih baru daripada objek Elasticsearch sumber. Untuk informasi tentang kompatibilitas versi, lihat Kompatibilitas versi pemulihan data dari snapshot.

Informasi latar belakang

Gambar berikut menunjukkan arsitektur referensi untuk migrasi.AWS迁移至阿里云ES架构图

Istilah

  • Elasticsearch: Mesin pencarian dan analitik RESTful terdistribusi yang dirancang untuk berbagai skenario. Sebagai inti dari Elastic Stack, Elasticsearch menyimpan data secara terpusat dan mencari serta menganalisis data.

  • Kibana: Menyediakan antarmuka visual bagi Anda untuk mencari dan menganalisis data.

  • Amazon OpenSearch Service: Pada September 2021, Amazon Elasticsearch Service diubah namanya menjadi Amazon OpenSearch Service. Amazon OpenSearch Service adalah layanan terkelola yang menawarkan API Elasticsearch yang mudah digunakan dan kemampuan analitik waktu nyata. Layanan ini juga menyediakan ketersediaan, skalabilitas, dan keamanan yang diperlukan untuk beban kerja produksi. Anda dapat menggunakan Amazon OpenSearch Service untuk dengan mudah menerapkan, melindungi, mengelola, dan menskalakan kluster Elasticsearch untuk skenario seperti analitik log, pencarian teks lengkap, dan pemantauan aplikasi.

  • Alibaba Cloud Elasticsearch: Dirancang berdasarkan Elasticsearch open source untuk skenario seperti analitik data dan pencarian. Berdasarkan Elasticsearch open source, Alibaba Cloud Elasticsearch menyediakan kontrol akses tingkat perusahaan, pemantauan keamanan dan peringatan, serta pelaporan otomatis.

  • Snapshot dan restore: Anda dapat menyimpan snapshot dari indeks individual atau seluruh kluster di repositori jarak jauh seperti sistem file bersama, seperti Amazon Simple Storage Service (Amazon S3) atau HDFS. Snapshot tersebut dapat digunakan untuk memulihkan data. Namun, data hanya dapat dipulihkan ke kluster Elasticsearch versi tertentu:

    • Data dalam snapshot yang dibuat di kluster Elasticsearch 5.x dapat dipulihkan ke kluster Elasticsearch 6.x.

    • Data dalam snapshot yang dibuat di kluster Elasticsearch 2.x dapat dipulihkan ke kluster Elasticsearch 5.x.

    • Data dalam snapshot yang dibuat di kluster Elasticsearch 1.x dapat dipulihkan ke kluster Elasticsearch 2.x.

Rencana migrasi

Untuk memigrasikan data dari domain Amazon OpenSearch Service ke kluster Alibaba Cloud Elasticsearch, lakukan langkah-langkah berikut:

  1. Buat indeks baseline.

    1. Buat repositori snapshot dan asosiasikan dengan bucket Amazon S3.

    2. Buat snapshot pertama untuk indeks yang datanya ingin Anda migrasikan. Snapshot pertama adalah snapshot penuh.

      Snapshot ini secara otomatis disimpan di bucket S3.

    3. Buat bucket Alibaba Cloud Object Storage Service (OSS), dan daftarkan dengan kluster Alibaba Cloud Elasticsearch sebagai repositori snapshot.

    4. Gunakan ossimport untuk mentransfer snapshot penuh dari bucket S3 ke bucket OSS.

    5. Pulihkan data dari snapshot penuh ke kluster Alibaba Cloud Elasticsearch.

  2. Proses snapshot tambahan secara berkala.

    Ulangi langkah-langkah sebelumnya untuk memulihkan data dari snapshot tambahan.

  3. Identifikasi snapshot akhir dan lakukan pergantian layanan.

    1. Hentikan layanan yang dapat memodifikasi data indeks.

    2. Buat snapshot akhir untuk domain Amazon OpenSearch Service.

    3. Transfer snapshot akhir ke bucket OSS. Lalu, pulihkan data dari snapshot ke kluster Alibaba Cloud Elasticsearch.

    4. Lakukan pergantian layanan ke kluster dan lihat data yang dimigrasikan di kluster.

Prasyarat

Operasi berikut telah dilakukan:

  • Buat domain Amazon OpenSearch Service Elasticsearch 5.5.2 di wilayah Singapura.

    Untuk informasi lebih lanjut, lihat Buat domain Amazon OpenSearch Service.

  • Buat kluster Alibaba Cloud Elasticsearch V5.5.3 di wilayah Tiongkok (Hangzhou).

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

  • Buat bucket OSS.

    Dalam contoh ini, sebuah bucket OSS dibuat di wilayah Tiongkok (Hangzhou). Kelas penyimpanan bucket adalah Standar, dan daftar kontrol akses (ACL) bucket adalah Privat. Pengaturan default digunakan untuk parameter lainnya. Untuk informasi lebih lanjut, lihat Buat bucket.

  • Siapkan indeks yang datanya ingin Anda migrasikan. Indeks movies digunakan dalam contoh ini.

Prasyarat untuk membuat snapshot manual di domain Amazon OpenSearch Service

Amazon OpenSearch Service secara otomatis membuat snapshot untuk shard indeks utama di domain setiap hari dan menyimpannya di bucket S3 yang telah dikonfigurasi sebelumnya. Snapshot ini disimpan hingga maksimal 14 hari tanpa biaya. Anda dapat menggunakan snapshot ini untuk memulihkan data ke domain. Namun, Anda tidak dapat menggunakannya untuk memigrasikan data ke domain lain. Untuk memigrasikan data ke domain lain, Anda harus menggunakan snapshot manual yang disimpan di bucket S3 Anda. Biaya standar S3 berlaku untuk snapshot manual.

Untuk membuat snapshot manual dan memulihkan data dari snapshot, Anda harus menggunakan AWS Identity and Access Management (IAM) dan S3. Sebelum Anda membuat snapshot, lakukan operasi yang tercantum dalam tabel berikut.

Operasi

Deskripsi

Buat bucket S3

Bucket digunakan untuk menyimpan snapshot manual dari domain Amazon OpenSearch Service.

Buat peran IAM

Peran digunakan untuk memberikan izin pada Amazon OpenSearch Service. Saat Anda menambahkan hubungan kepercayaan untuk peran, Anda harus menentukan Amazon OpenSearch Service di elemen Principal. Peran ini juga diperlukan saat Anda mendaftarkan repositori snapshot dengan Amazon OpenSearch Service. Hanya pengguna IAM yang mengambil peran ini yang dapat mendaftarkan repositori snapshot.

Buat kebijakan IAM

Kebijakan ini menentukan tindakan yang dapat dilakukan S3 pada bucket S3. Kebijakan ini harus dilampirkan ke peran IAM yang digunakan untuk memberikan izin pada Amazon OpenSearch Service. Anda harus menentukan bucket S3 di elemen Resource kebijakan.

  • Buat bucket S3

    Anda memerlukan bucket S3 untuk menyimpan snapshot manual. Catat Amazon Resource Name (ARN)-nya. ARN digunakan oleh item berikut:

    • Elemen Resource dalam kebijakan IAM yang dilampirkan ke peran IAM Anda

    • Klien Python yang digunakan untuk mendaftarkan repositori snapshot

    Kode berikut memberikan ARN dari bucket S3:

    arn:aws:s3:::eric-es-index-backups
  • Buat peran IAM

    Anda harus memiliki peran IAM, di mana Amazon OpenSearch Service (es.amazonaws.com) ditentukan dalam elemen Service dalam hubungan kepercayaannya. Contoh:

    {
      "Version": "2012-10-17",
      "Statement": [
        {
          "Sid": "",
          "Effect": "Allow",
          "Principal": {
            "Service": "es.amazonaws.com"
          },
          "Action": "sts:AssumeRole"
        }
      ]
    }

    Anda dapat melihat detail hubungan kepercayaan di konsol IAM.

    查看信任关系

    Catatan

    Saat Anda membuat peran di konsol IAM, Amazon OpenSearch Service tidak termasuk dalam daftar drop-down Select role type. Anda dapat memilih Amazon EC2 dari daftar drop-down dan membuat peran sesuai petunjuk. Lalu, ubah ec2.amazonaws.com dalam hubungan kepercayaan peran menjadi es.amazonaws.com.

  • Buat kebijakan IAM

    Anda harus melampirkan kebijakan IAM ke peran IAM. Kebijakan ini menentukan bucket S3 yang digunakan untuk menyimpan snapshot manual dari domain Amazon OpenSearch Service. Kode berikut menunjukkan kebijakan sampel. Dalam kebijakan tersebut, ARN dari bucket eric-es-index-backups ditentukan.

    {
        "Version": "2012-10-17",
        "Statement": [
            {
                "Action": [
                    "s3:ListBucket"
                ],
                "Effect": "Allow",
                "Resource": [
                    "arn:aws:s3:::eric-es-index-backups"
                ]
            },
            {
                "Action": [
                    "s3:GetObject",
                    "s3:PutObject",
                    "s3:DeleteObject"
                ],
                "Effect": "Allow",
                "Resource": [
                    "arn:aws:s3:::eric-es-index-backups/*"
                ]
            }
        ]
    }
    1. Salin konten kebijakan ke bagian Edit kebijakan.策略编辑区域

    2. Periksa apakah kebijakan benar.Policy Summary

    3. Lampirkan kebijakan ke peran.为IAM角色添加IAM策略

Langkah 1: Daftarkan repositori snapshot manual

Anda hanya dapat membuat snapshot manual setelah mendaftarkan repositori snapshot dengan Amazon OpenSearch Service. Sebelum Anda membuat snapshot manual, tandatangani permintaan AWS Anda ke pengguna atau peran yang ditentukan dalam hubungan kepercayaan peran IAM. Untuk informasi lebih lanjut, lihat Prasyarat untuk membuat snapshot manual di domain Amazon OpenSearch Service.

Penting

Anda tidak dapat menggunakan perintah cURL untuk mendaftarkan repositori snapshot karena perintah tersebut tidak mendukung penandatanganan permintaan AWS. Sebagai gantinya, gunakan klien Python sampel (register_snapshot_repository.py) untuk mendaftarkan repositori snapshot.

  1. Unduh file register_snapshot_repository.py.

  2. Modifikasi file.

    Ubah nilai yang disorot kuning dalam file berdasarkan kondisi aktual. Lalu, salin kontennya ke dalam file Python bernama snapshot.py.

    Tabel berikut menjelaskan parameter dalam file Klien Python Sampel.

    Parameter

    Deskripsi

    region

    Wilayah AWS tempat repositori snapshot dibuat.

    host

    Titik akhir domain Amazon OpenSearch Service.

    aws_access_key_id

    ID kredensial IAM Anda.

    aws_secret_access_key

    Kunci kredensial IAM Anda.

    path

    Jalur repositori snapshot.

    data

    Nilai ini harus mencakup nama dan ARN bucket S3 untuk peran IAM yang Anda buat di Prasyarat untuk membuat snapshot manual di domain Amazon OpenSearch Service.

    Penting
    • Jika Anda ingin mengaktifkan enkripsi sisi server dengan kunci yang dikelola S3 untuk repositori snapshot, tambahkan "server_side_encryption": true ke array JSON pengaturan.

    • Jika bucket S3 berada di wilayah ap-southeast-1, ganti "region": "ap-southeast-1" dengan "endpoint": "s3.amazonaws.com".

  3. Instal Perpustakaan Amazon Web Services boto-2.48.0.

    Klien Python sampel di atas mengharuskan Anda menginstal paket boto versi 2.x di komputer tempat Anda mendaftarkan repositori snapshot.

    # wget https://pypi.python.org/packages/66/e7/fe1db6a5ed53831b53b8a6695a8f134a58833cadb5f2740802bc3730ac15/boto-2.48.0.tar.gz#md5=ce4589dd9c1d7f5d347363223ae1b970 
    # tar zxvf boto-2.48.0.tar.gz
    # cd boto-2.48.0
    # sudo python setup.py install
  4. Jalankan klien Python untuk mendaftarkan repositori snapshot.

    # python snapshot.py
  5. Masuk ke konsol Kibana dari domain Amazon OpenSearch Service. Di bilah navigasi kiri, klik Dev Tools. Pada tab Console halaman yang muncul, jalankan perintah berikut untuk melihat hasil pendaftaran:

    GET _snapshot

    查看请求结果

Langkah 2: Buat snapshot pertama dan pulihkan data dari snapshot

  1. Buat snapshot di domain Amazon OpenSearch Service.

    Catatan

    Anda dapat menjalankan perintah berikut di konsol Kibana atau menggunakan perintah cURL di antarmuka baris perintah (CLI) Linux atau Mac OS X.

    • Buat snapshot bernama snapshot_movies_1 untuk indeks movies di repositori snapshot eric-snapshot-repository.

      PUT _snapshot/eric-snapshot-repository/snapshot_movies_1
      {
      "indices": "movies"
      }
    • Lihat status snapshot.

      GET _snapshot/eric-snapshot-repository/snapshot_movies_1

      查看快照状态

    • Di konsol S3, lihat objek snapshot.瞎看快照文件

  2. Transfer snapshot yang dibuat dari bucket S3 ke bucket OSS.

    Untuk informasi lebih lanjut, lihat Migrasi data dari Amazon S3 ke Alibaba Cloud OSS.

    Setelah snapshot ditransfer, lihat snapshot di konsol OSS.

    OSS快照数据

  3. Pulihkan data dari snapshot ke kluster Alibaba Cloud Elasticsearch.

    1. Buat repositori snapshot.

      Masuk ke konsol Kibana dari kluster Elasticsearch. Untuk informasi lebih lanjut, lihat Masuk ke konsol Kibana. Lalu, di bilah navigasi kiri, klik Dev Tools. Pada tab Console halaman yang muncul, jalankan perintah berikut untuk membuat repositori snapshot. Nama repositori snapshot harus sama dengan repositori snapshot yang didaftarkan dengan Amazon OpenSearch Service.

      PUT _snapshot/eric-snapshot-repository
      {
      "type": "oss",
      "settings": {
                  "base_path": "my/snapshot/directory"
                  "endpoint": "http://oss-cn-hangzhou-internal.aliyuncs.com", 
                  "access_key_id": "your AccessKeyID",
                  "secret_access_key": "your AccessKeySecret ",
                  "bucket": "eric-oss-aws-es-snapshot-s3",
                  "compress": true
            }
      }
    2. Lihat status snapshot bernama snapshot_movies_1.

      GET _snapshot/eric-snapshot-repository/snapshot_movies_1

      查看快照

      Catatan

      Catat waktu mulai dan waktu selesai operasi pembuatan snapshot. Catatan ini digunakan saat Anda menggunakan ossimport untuk memigrasikan data dalam snapshot tambahan. Contoh:

      • "start_time_in_millis": 1519786844591

      • "end_time_in_millis": 1519786846236

  4. Pulihkan data dari snapshot.

    POST _snapshot/eric-snapshot-repository/snapshot_movies_1/_restore
    {
        "indices": "movies"
    }

    Jalankan perintah berikut untuk memeriksa ketersediaan indeks movies:

    GET movies/_recovery

    Setelah perintah berhasil dijalankan, Anda dapat melihat tiga set data di indeks movies. Selain itu, data tersebut sama dengan yang ada di domain Amazon OpenSearch Service.查看ES索引数据

Langkah 3: Buat snapshot akhir dan pulihkan data dari snapshot

  1. Masukkan data ke indeks movies di domain Amazon OpenSearch Service.

    Indeks movies berisi tiga set data. Masukkan dua set data lagi.

    插入另外两条数据

    Anda dapat menjalankan perintah GET movies/_count untuk melihat volume data indeks.

  2. Buat snapshot.

    Jalankan perintah berikut untuk membuat snapshot. Untuk informasi lebih lanjut, lihat Buat snapshot di domain Amazon OpenSearch Service.

    PUT _snapshot/eric-snapshot-repository/snapshot_movies_2
    {
    "indices": "movies"
    }

    Setelah snapshot dibuat, jalankan perintah berikut untuk melihat status snapshot:

    GET _snapshot/eric-snapshot-repository/snapshot_movies_2

    Lihat objek di bucket S3.

    查看S3空间文件

  3. Transfer snapshot dari bucket S3 ke bucket OSS.

    Anda dapat menggunakan ossimport untuk mentransfer snapshot. Bucket S3 menyimpan dua objek snapshot. Anda dapat mengubah nilai variabel isSkipExistFile di file local_job.cfg untuk memigrasikan objek snapshot tambahan.

    Variabel isSkipExistFile menunjukkan apakah objek yang ada dilewati selama migrasi data. Nilai variabel ini bertipe Boolean. Nilai defaultnya adalah false. Jika Anda mengatur nilainya menjadi true, objek dilewati berdasarkan pengaturan size dan LastModifiedTime. Jika Anda mengatur nilainya menjadi false, objek yang ada akan ditimpa. Jika jobType diatur ke audit, variabel ini tidak valid.

    Kemudian, Anda dapat melihat objek snapshot tambahan di bucket OSS.

    新文件迁移到OSS中

  4. Pulihkan data dari snapshot tambahan.

    Untuk informasi lebih lanjut, lihat Langkah 2: Buat snapshot pertama dan pulihkan data dari snapshot. Sebelum Anda memulihkan data, Anda harus menonaktifkan indeks movies. Setelah pemulihan, Anda dapat mengaktifkan kembali indeks movies.

    • Nonaktifkan indeks movies

      POST /movies/_close
    • Lihat status indeks movies

      GET movies/_stats
    • Pulihkan data dari snapshot

      POST _snapshot/eric-snapshot-repository/snapshot_movies_2/_restore
      {
          "indices": "movies"
      }
    • Aktifkan indeks movies

      POST /movies/_open

    Setelah data dipulihkan dari snapshot, jumlah dokumen di indeks movies kluster Elasticsearch adalah 5. Jumlah ini sama dengan yang ada di indeks domain Amazon OpenSearch Service.

    恢复快照结果

Rangkuman

Anda dapat menggunakan fitur snapshot dan restore untuk memigrasikan data dari domain Amazon OpenSearch Service ke kluster Alibaba Cloud Elasticsearch. Fitur ini mengharuskan Anda menonaktifkan indeks yang datanya ingin dimigrasikan untuk menghindari permintaan dan operasi penulisan selama migrasi.

Untuk informasi lebih lanjut, lihat topik berikut:

Tanya Jawab Umum

T: Mengapa kesalahan dikembalikan saat saya memulihkan data indeks dari snapshot di OSS ke kluster Alibaba Cloud Elasticsearch?

J: Mungkin karena nama objek snapshot di OSS adalah karakter khusus, seperti garis miring (/).

Saat Anda memulihkan data indeks dari snapshot di OSS ke kluster Elasticsearch Alibaba Cloud, nama objek snapshot di OSS tidak boleh berupa karakter khusus. Anda dapat menggunakan alat manajemen grafis ossbrowser untuk memindahkan objek snapshot ke folder normal.