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)
Buat canary index dari index sumber dan kirimkan skema baru lengkap.
Tunggu hingga data yang sudah ada dan data inkremental tersinkronisasi, serta canary index menyusul index sumber.
Secara opsional, distribusikan traffic kueri antara index sumber dan canary index untuk Pengujian A/B.
Setelah hasil kueri diverifikasi, tukar index sehingga nama index sumber mengarah ke skema baru.
Amati index selama periode stabilisasi setelah penukaran. Kemudian, hapus canary index yang mengarah ke skema lama.
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
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) |
|
Nama tabel. |
|
indexName (wajib) |
|
Nama canary index. Nama harus diakhiri dengan |
|
indexSchema (wajib) |
|
Skema baru lengkap untuk canary index. |
|
sourceIndexName (wajib) |
|
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) |
|
TTL data canary index dalam detik. Untuk menentukan TTL dalam hari, panggil |
Skema index
indexSchema bertipe IndexSchema dan berisi parameter berikut.
|
Nama |
Tipe |
Deskripsi |
|
fieldSchemas (wajib) |
|
Daftar bidang lengkap setelah perubahan. Tambahkan, hapus, atau ubah bidang dalam daftar ini untuk mengubah bidang indeks. |
|
indexSetting (opsional) |
|
Pengaturan index. Gunakan |
|
indexSort (opsional) |
|
Pengaturan presorting index. |
Untuk struktur parameter lengkap serta batasan bidang indeks, pengaturan indeks, dan pengaturan presorting, lihat Buat search index.