Tablestore SDK for Java memungkinkan pemetaan bidang sumber ke tipe bidang indeks yang berbeda melalui kolom virtual tanpa mengubah skema tabel atau menulis ulang data.
Prasyarat
Sebelum memulai, pastikan Anda telah:
Tablestore SDK for Java yang telah terinstal dan Klien yang telah diinisialisasi
Membuat tabel dengan jumlah maksimum versi diatur ke 1
Mengatur TTL tabel ke -1 atau menonaktifkan pembaruan tabel menggunakan
UpdateRow
Catatan penggunaan
Saat membuat kolom virtual, bidang sumber dan kolom virtual harus mematuhi aturan konversi tipe berikut.
|
Tipe bidang sumber |
Tipe kolom virtual |
|
String |
Keyword (termasuk array), FuzzyKeyword (termasuk array), Text (termasuk array), Long (termasuk array), Double (termasuk array), Date (termasuk array), IP (termasuk array), Geo-point (termasuk array) |
|
Long |
Keyword, FuzzyKeyword, Text, Date |
|
Double |
Keyword, FuzzyKeyword, Text |
Kolom virtual hanya dapat digunakan dalam kueri dan tidak dapat dikembalikan oleh ColumnsToGet. Untuk mengambil nilainya, kembalikan bidang sumber yang dipetakan ke kolom virtual tersebut.
Deskripsi
Kolom virtual memetakan bidang dari tabel sumber ke tipe bidang indeks pencarian yang berbeda. Kolom virtual dapat dikonfigurasi saat membuat indeks pencarian atau ditambahkan ke indeks yang sudah ada dengan memodifikasi skemanya secara dinamis. Setelah pemetaan dibuat, kueri data menggunakan nama kolom virtual.
Contoh berikut menunjukkan alur kerja lengkap: membuat indeks pencarian dengan kolom virtual, lalu melakukan kueri data menggunakan salah satu kolom virtual tersebut.
Buat kolom virtual
Contoh berikut memetakan bidang sumber bertipe Keyword category ke kolom virtual bertipe Long, serta bidang sumber bertipe Long price ke kolom virtual bertipe Keyword.
String tableName = "example_table";
String indexName = "example_index";
IndexSchema indexSchema = new IndexSchema();
indexSchema.setFieldSchemas(Arrays.asList(
new FieldSchema("category", FieldType.KEYWORD),
new FieldSchema("category_as_long", FieldType.LONG)
.setVirtualField(true)
.setSourceFieldName("category"),
new FieldSchema("price", FieldType.LONG),
new FieldSchema("price_as_keyword", FieldType.KEYWORD)
.setVirtualField(true)
.setSourceFieldName("price")));
CreateSearchIndexRequest request = new CreateSearchIndexRequest();
request.setTableName(tableName);
request.setIndexName(indexName);
request.setIndexSchema(indexSchema);
client.createSearchIndex(request);
Setelah permintaan berhasil, tunggu hingga indeks pencarian selesai menyinkronkan data sebelum menjalankan kueri.
Lakukan kueri data dengan kolom virtual
Contoh berikut melakukan kueri terhadap baris-baris yang nilai kolom virtual price_as_keyword-nya sama dengan string 1000, serta mengembalikan kolom dari tabel sumber.
String tableName = "example_table";
String indexName = "example_index";
TermsQuery query = new TermsQuery();
query.setFieldName("price_as_keyword");
query.addTerm(ColumnValue.fromString("1000"));
SearchQuery searchQuery = new SearchQuery();
searchQuery.setQuery(query);
searchQuery.setGetTotalCount(true);
SearchRequest request = new SearchRequest(tableName, indexName, searchQuery);
SearchRequest.ColumnsToGet columnsToGet = new SearchRequest.ColumnsToGet();
columnsToGet.setReturnAll(true);
request.setColumnsToGet(columnsToGet);
SearchResponse response = client.search(request);
System.out.println(response.getTotalCount());
System.out.println(response.getRows());
Parameter
FieldSchema mencakup parameter berikut untuk mendefinisikan kolom virtual. Untuk parameter bidang indeks pencarian lainnya, lihat Buat indeks pencarian.
|
Nama |
Type |
Deskripsi |
|
fieldName (wajib) |
|
Nama kolom virtual. Nama ini harus unik dalam indeks. |
|
fieldType (wajib) |
|
Tipe bidang indeks pencarian untuk kolom virtual. Tipe ini harus mematuhi aturan konversi yang didukung. |
|
isVirtualField (wajib) |
|
Atur parameter ini ke |
|
sourceFieldNames (wajib) |
|
Nama bidang sumber yang dipetakan ke kolom virtual. Saat ini hanya satu bidang sumber yang didukung. Konfigurasikan dengan |