全部产品
Search
文档中心

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

更新时间:Mar 01, 2026

Migrasikan data indeks Elasticsearch dari domain Amazon OpenSearch Service ke kluster Alibaba Cloud Elasticsearch menggunakan mekanisme snapshot dan restore.

Ikhtisar migrasi

Migrasi ini mentransfer data indeks melalui snapshot Elasticsearch dengan menggunakan Amazon Simple Storage Service (Amazon S3) dan Object Storage Service (OSS) sebagai penyimpanan perantara. Langkah-langkah utamanya adalah:

  1. Buat repositori snapshot pada domain Amazon OpenSearch Service dan ambil snapshot lengkap dari indeks Anda.

  2. Transfer snapshot dari bucket S3 ke bucket OSS menggunakan ossimport atau Data Online Migration.

  3. Daftarkan repositori snapshot pada kluster Alibaba Cloud Elasticsearch yang mengarah ke bucket OSS tersebut.

  4. Pulihkan snapshot ke kluster Alibaba Cloud Elasticsearch.

  5. Sinkronkan perubahan inkremental dengan mengulangi siklus snapshot-transfer-restore hingga cutover.

  6. Lakukan cutover akhir dengan menghentikan penulisan data, mengambil snapshot terakhir, lalu mengalihkan traffic ke Alibaba Cloud Elasticsearch.

Migration architecture

Kompatibilitas versi

Versi kluster Elasticsearch tujuan harus sama atau lebih baru daripada versi kluster sumber. Snapshot hanya kompatibel maju sebanyak satu versi utama:

Versi snapshot sumberTarget Pemulihan yang Didukung
Elasticsearch 1.xElasticsearch 2.x
Elasticsearch 2.xElasticsearch 5.x
Elasticsearch 5.xElasticsearch 6.x

Untuk detail lengkap, lihat Snapshot restore version compatibility.

Penting

Mekanisme ini tidak terbatas pada AWS. Snapshot Elasticsearch apa pun yang disimpan di Amazon S3, Tencent Cloud Object Storage (COS), atau layanan object storage lainnya dapat ditransfer ke OSS dan dipulihkan. Untuk informasi selengkapnya, lihat Migrate data dan Create manual snapshots and restore data from manual snapshots.

Prasyarat

Sisi AWS

PrasyaratDeskripsi
Domain Amazon OpenSearch ServiceDomain yang sedang berjalan dengan indeks yang akan dimigrasikan. Panduan ini menggunakan Elasticsearch 5.5.2 di wilayah Singapura sebagai contoh. Lihat Create an Amazon OpenSearch Service domain.
Bucket S3Menyimpan snapshot manual. Catat Amazon Resource Name (ARN)-nya, misalnya arn:aws:s3:::eric-es-index-backups. Biaya standar S3 berlaku.
Peran IAMMemberikan akses Amazon OpenSearch Service ke bucket S3. Hubungan kepercayaan (trust relationship) harus menentukan es.amazonaws.com dalam elemen Service.
Kebijakan IAMMenentukan aksi S3 (s3:ListBucket, s3:GetObject, s3:PutObject, s3:DeleteObject) yang dapat dilakukan oleh peran IAM pada bucket tersebut.
Lingkungan PythonDiperlukan untuk menjalankan skrip pendaftaran repositori snapshot. Instal library requests dan requests-aws4auth.

Sisi Alibaba Cloud

PrasyaratDeskripsi
Kluster Alibaba Cloud ElasticsearchKluster yang sedang berjalan dengan versi yang sama atau lebih baru daripada sumber. Panduan ini menggunakan V5.5.3 di wilayah Tiongkok (Hangzhou). Lihat Create an Alibaba Cloud Elasticsearch cluster.
Bucket OSSMenerima data snapshot. Panduan ini menggunakan bucket dengan kelas penyimpanan Standard dan daftar kontrol akses (ACL) Private di wilayah Tiongkok (Hangzhou). Lihat Create buckets.
ID AccessKey dan Rahasia AccessKeyDigunakan untuk mengautentikasi kluster Elasticsearch dengan OSS.
Amazon OpenSearch Service secara otomatis membuat snapshot harian dari shard utama dan menyimpannya hingga 14 hari tanpa biaya. Namun, snapshot otomatis ini hanya dapat memulihkan data ke domain yang sama. Untuk memigrasikan data ke kluster lain, ambil snapshot manual.

Langkah 1: Siapkan izin IAM AWS

Sebelum mendaftarkan repositori snapshot, konfigurasikan IAM untuk memberikan akses Amazon OpenSearch Service ke bucket S3 Anda.

Buat peran IAM

  1. Buka Konsol IAM dan buat peran.

    Amazon OpenSearch Service tidak tercantum dalam dropdown Select role type. Pilih Amazon EC2 sebagai gantinya, lalu perbarui hubungan kepercayaan untuk mengganti ec2.amazonaws.com dengan es.amazonaws.com.
  2. Atur hubungan kepercayaan sebagai berikut:

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

Buat dan lampirkan kebijakan IAM

  1. Buat kebijakan yang memberikan akses peran IAM ke bucket S3. Ganti <your-s3-bucket> dengan nama bucket Anda:

       {
         "Version": "2012-10-17",
         "Statement": [
           {
             "Action": [
               "s3:ListBucket"
             ],
             "Effect": "Allow",
             "Resource": [
               "arn:aws:s3:::<your-s3-bucket>"
             ]
           },
           {
             "Action": [
               "s3:GetObject",
               "s3:PutObject",
               "s3:DeleteObject"
             ],
             "Effect": "Allow",
             "Resource": [
               "arn:aws:s3:::<your-s3-bucket>/*"
             ]
           }
         ]
       }
  2. Lampirkan kebijakan tersebut ke peran IAM.

Langkah 2: Daftarkan repositori snapshot pada Amazon OpenSearch Service

Amazon OpenSearch Service memerlukan penandatanganan permintaan AWS untuk pendaftaran repositori snapshot, sehingga Anda tidak dapat menggunakan perintah cURL. Gunakan client Python yang disediakan sebagai gantinya.

  1. Unduh skrip register_snapshot_repository.py.

  2. Perbarui parameter skrip:

    Untuk mengaktifkan enkripsi sisi server dengan kunci yang dikelola S3, tambahkan "server_side_encryption": true ke JSON settings. Jika bucket S3 berada di wilayah ap-southeast-1, ganti "region": "ap-southeast-1" dengan "endpoint": "s3.amazonaws.com".
    ParameterDeskripsi
    regionWilayah AWS dari domain Amazon OpenSearch Service
    hostTitik akhir domain Amazon OpenSearch Service
    aws_access_key_idID kredensial IAM Anda
    aws_secret_access_keyKunci kredensial IAM Anda
    pathJalur repositori snapshot
    dataNama bucket S3 dan ARN peran IAM
  3. Instal library Python yang diperlukan:

       pip install requests requests-aws4auth
  4. Jalankan skrip untuk mendaftarkan repositori snapshot:

       python register_snapshot_repository.py
  5. Verifikasi pendaftaran. Masuk ke Konsol Kibana domain Amazon OpenSearch Service, klik Dev Tools di panel navigasi kiri, lalu jalankan perintah berikut di tab Console: Tanggapan akan menampilkan daftar repositori snapshot yang telah didaftarkan.

       GET _snapshot/<repository>/snapshot_1

Langkah 3: Buat snapshot lengkap

Jalankan perintah berikut di Konsol Dev Tools Kibana atau menggunakan cURL dari command line.

  1. Buat snapshot. Ganti <repository> dengan nama repositori snapshot Anda dan <index> dengan indeks yang akan dimigrasikan: Contoh dengan indeks movies:

       PUT _snapshot/<repository>/snapshot_1
       {
         "indices": "<index>"
       }
       PUT _snapshot/eric-snapshot-repository/snapshot_movies_1
       {
         "indices": "movies"
       }
  2. Periksa status snapshot: Tunggu hingga bidang state menunjukkan SUCCESS. Catat nilai start_time_in_millis dan end_time_in_millis untuk transfer snapshot inkremental nanti.

       GET _snapshot/<repository>/snapshot_1
  3. Verifikasi bahwa objek snapshot muncul di Konsol S3.

Langkah 4: Transfer snapshot dari S3 ke OSS

Transfer objek snapshot dari bucket S3 ke bucket OSS. Untuk petunjuk lengkap, lihat Migrate data from Amazon S3 to Alibaba Cloud OSS.

Setelah transfer selesai, verifikasi bahwa objek snapshot muncul di Konsol OSS.

Langkah 5: Pulihkan snapshot pada Alibaba Cloud Elasticsearch

  1. Masuk ke Konsol Kibana kluster Alibaba Cloud Elasticsearch Anda. Untuk informasi selengkapnya, lihat Log on to the Kibana console.

  2. Klik Dev Tools di panel navigasi kiri dan buka tab Console.

  3. Daftarkan repositori snapshot yang mengarah ke bucket OSS. Nama repositori harus sama dengan yang didaftarkan pada Amazon OpenSearch Service. Ganti nilai placeholder: Contoh:

       PUT _snapshot/<repository>
       {
         "type": "oss",
         "settings": {
           "endpoint": "http://oss-cn-hangzhou-internal.aliyuncs.com",
           "access_key_id": "<your-AccessKey-ID>",
           "secret_access_key": "<your-AccessKey-secret>",
           "bucket": "<your-oss-bucket>",
           "base_path": "<snapshot-directory-path>",
           "compress": true
         }
       }
       PUT _snapshot/eric-snapshot-repository
       {
         "type": "oss",
         "settings": {
           "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",
           "base_path": "my/snapshot/directory",
           "compress": true
         }
       }
  4. Verifikasi bahwa snapshot dapat diakses:

       GET _snapshot/<repository>/snapshot_1
  5. Pulihkan snapshot:

       POST _snapshot/<repository>/snapshot_1/_restore
       {
         "indices": "<index>"
       }
  6. Verifikasi bahwa pemulihan berhasil:

       GET <index>/_recovery

Langkah 6: Migrasi perubahan inkremental

Setelah memulihkan snapshot garis dasar, ulangi siklus snapshot-transfer-restore untuk menyinkronkan perubahan inkremental. Dalam contoh ini, indeks movies awalnya berisi 3 dokumen. Setelah menambahkan 2 dokumen lagi pada domain sumber, snapshot inkremental menangkap perubahan tersebut.

Buat snapshot inkremental

  1. Pada domain Amazon OpenSearch Service, buat snapshot baru:

       PUT _snapshot/<repository>/snapshot_2
       {
         "indices": "<index>"
       }
  2. Periksa status snapshot:

       GET _snapshot/<repository>/snapshot_2

Transfer snapshot inkremental

Gunakan ossimport untuk mentransfer hanya objek snapshot baru. Dalam file local_job.cfg, atur isSkipExistFile ke true untuk melewati objek yang sudah ada di bucket OSS berdasarkan size dan LastModifiedTime.

isSkipExistFilePerilaku
false (default)Menimpa objek yang sudah ada
trueMelewati objek yang cocok berdasarkan ukuran dan waktu modifikasi terakhir
Jika jobType diatur ke audit, pengaturan isSkipExistFile tidak berpengaruh.

Untuk informasi selengkapnya, lihat ossimport description and configuration.

Pulihkan snapshot inkremental

  1. Tutup indeks sebelum memulihkan:

       POST /<index>/_close
  2. Verifikasi bahwa indeks telah ditutup:

       GET <index>/_stats
  3. Pulihkan snapshot inkremental:

       POST _snapshot/<repository>/snapshot_2/_restore
       {
         "indices": "<index>"
       }
  4. Buka kembali indeks:

       POST /<index>/_open
  5. Verifikasi jumlah dokumen sesuai dengan sumber. Dalam contoh ini, indeks movies harus berisi 5 dokumen (3 asli + 2 tambahan):

       GET <index>/_count
Penting

Tutup indeks target sebelum memulihkan snapshot inkremental. Pemulihan ke indeks yang terbuka akan gagal.

Langkah 7: Lakukan cutover akhir

  1. Hentikan semua layanan yang menulis ke indeks sumber pada domain Amazon OpenSearch Service.

  2. Buat snapshot terakhir pada domain Amazon OpenSearch Service:

       PUT _snapshot/<repository>/snapshot_final
       {
         "indices": "<index>"
       }
  3. Transfer snapshot terakhir ke OSS dan pulihkan ke kluster Alibaba Cloud Elasticsearch. Ikuti langkah-langkah yang dijelaskan di Langkah 6: Migrasi perubahan inkremental.

  4. Alihkan traffic aplikasi ke titik akhir kluster Alibaba Cloud Elasticsearch.

Verifikasi hasil migrasi

Setelah pemulihan, pastikan data lengkap dan benar:

  1. Periksa jumlah dokumen. Bandingkan jumlah dokumen pada kedua kluster:

       GET <index>/_count
  2. Periksa kesehatan indeks. Pastikan status indeks adalah green:

       GET _cluster/health/<index>
  3. Periksa status pemulihan. Pastikan semua shard telah sepenuhnya dipulihkan:

       GET <index>/_recovery
  4. Periksa sampel data. Kueri beberapa dokumen untuk memastikan integritas data:

       GET <index>/_search
       {
         "size": 5
       }

FAQ

Mengapa pemulihan gagal dengan error tentang objek snapshot di OSS?

Hal ini biasanya terjadi ketika nama objek snapshot di OSS mengandung karakter khusus seperti garis miring (/). Gunakan ossbrowser untuk memindahkan objek snapshot yang terpengaruh ke folder biasa, lalu coba lagi pemulihan tersebut.

Dapatkah saya menggunakan cURL untuk mendaftarkan repositori snapshot pada Amazon OpenSearch Service?

Tidak. Amazon OpenSearch Service memerlukan penandatanganan permintaan AWS, yang tidak didukung oleh cURL. Gunakan client Python dengan library requests dan requests-aws4auth sebagai gantinya.

Apakah saya perlu menutup indeks sebelum setiap pemulihan?

Hanya untuk pemulihan inkremental. Saat memulihkan ke indeks yang sudah ada dan sedang terbuka, tutup terlebih dahulu dengan POST /<index>/_close, lalu buka kembali dengan POST /<index>/_open setelah pemulihan selesai.

Topik terkait