All Products
Search
Document Center

:Ubah skema search index secara dinamis

Last Updated:Jul 25, 2026

Tablestore SDK for Java memungkinkan pembuatan canary index dari search index sumber untuk menambahkan atau menghapus bidang (field), serta mengubah tipe bidang, bidang routing, dan pengaturan presorting tanpa mengganggu operasi baca atau tulis.

Prasyarat

Anda telah menginstal Tablestore SDK for Java dan menginisialisasi client.

Deskripsi

Panggil createSearchIndex untuk membuat canary index yang berisi skema baru lengkap dari index sumber. Proses ini tidak mengganggu operasi baca atau tulis pada tabel, dan kode kueri yang menggunakan nama index sumber tidak perlu diubah. Proses ini mencakup langkah-langkah berikut:

public CreateSearchIndexResponse createSearchIndex(CreateSearchIndexRequest request)
  1. Buat canary index dari index sumber dan kirimkan skema baru lengkap.

  2. Tunggu hingga data yang sudah ada dan data inkremental tersinkronisasi, serta canary index menyusul index sumber.

  3. Secara opsional, distribusikan traffic kueri antara index sumber dan canary index untuk Pengujian A/B.

  4. Setelah hasil kueri diverifikasi, tukar index sehingga nama index sumber mengarah ke skema baru.

  5. Amati index selama periode stabilisasi setelah penukaran. Kemudian, hapus canary index yang mengarah ke skema lama.

Penting
  • Canary index adalah index sementara yang digunakan selama proses modifikasi skema, dan namanya harus diakhiri dengan _reindex. Pemetaan index dan bobot traffic berubah selama proses berlangsung. Jangan lakukan kueri data menggunakan nama canary index.

  • Anda dapat melakukan pengindeksan ulang hingga lima index sekaligus. Sebelum memulai batch berikutnya, tunggu hingga canary index dalam batch saat ini menyusul index sumbernya atau menyelesaikan penukaran index.

Buat canary index

Contoh berikut mengubah col1 dari Long menjadi Keyword, menghapus col2, menambahkan bidang Long col3, dan mengonfigurasi id sebagai bidang routing.

String tableName = "example_table";
String sourceIndexName = "example_index";
String reindexName = "example_index_reindex";
IndexSchema indexSchema = new IndexSchema();
indexSchema.setFieldSchemas(Arrays.asList(
        new FieldSchema("id", FieldType.KEYWORD),
        new FieldSchema("col1", FieldType.KEYWORD),
        new FieldSchema("col3", FieldType.LONG)));

IndexSetting indexSetting = new IndexSetting();
indexSetting.setRoutingFields(Arrays.asList("id"));
indexSchema.setIndexSetting(indexSetting);

CreateSearchIndexRequest request = new CreateSearchIndexRequest();
request.setTableName(tableName);
request.setIndexName(reindexName);
request.setSourceIndexName(sourceIndexName);
request.setIndexSchema(indexSchema);
client.createSearchIndex(request);

Setelah permintaan berhasil, kueri informasi canary index. Verifikasi bahwa statusnya adalah RUNNING, brotherIndexName berisi nama index sumber, dan skema barunya benar. Status RUNNING menunjukkan bahwa canary index telah dibuat, bukan bahwa canary index telah menyusul index sumber.

Validasi dan tukar index

Penting

Lakukan Pengujian A/B dan tukar index hanya setelah Konsol menunjukkan bahwa canary index aman untuk ditukar. Setelah penukaran, nama index sumber mengarah ke skema baru dan nama canary index mengarah ke skema lama. Verifikasi index dan amati selama periode stabilisasi sebelum menghapus canary index.

Gunakan Tablestore console untuk memeriksa progres sinkronisasi, mengonfigurasi bobot traffic, menukar index, dan menghapus canary index. Untuk petunjuk lebih lanjut, lihat Ubah skema search index secara dinamis.

Parameter

CreateSearchIndexRequest berisi parameter berikut:

Nama

Type

Deskripsi

tableName (wajib)

String

Nama tabel.

indexName (wajib)

String

Nama canary index. Nama harus diakhiri dengan _reindex.

indexSchema (wajib)

IndexSchema

Skema baru lengkap untuk canary index.

sourceIndexName (wajib)

String

Index sumber yang menjadi dasar pengindeksan ulang. Tablestore membuat canary index dari index ini dan menyinkronkan data tabel yang sudah ada maupun data inkremental ke canary index.

timeToLive (opsional)

Integer

TTL data canary index dalam detik. Untuk menentukan TTL dalam hari, panggil setTimeToLiveInDays. Untuk nilai dan batasan yang valid, lihat Konfigurasi TTL search index.

Skema index

indexSchema bertipe IndexSchema dan berisi parameter berikut.

Nama

Tipe

Deskripsi

fieldSchemas (wajib)

List<FieldSchema>

Daftar bidang lengkap setelah perubahan. Tambahkan, hapus, atau ubah bidang dalam daftar ini untuk mengubah bidang indeks.

indexSetting (opsional)

IndexSetting

Pengaturan index. Gunakan routingFields untuk mengubah bidang routing.

indexSort (opsional)

Sort

Pengaturan presorting index.

Untuk struktur parameter lengkap serta batasan bidang indeks, pengaturan indeks, dan pengaturan presorting, lihat Buat search index.