All Products
Search
Document Center

Tablestore:Gunakan kolom virtual

Last Updated:Jul 25, 2026

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)

String

Nama kolom virtual. Nama ini harus unik dalam indeks.

fieldType (wajib)

FieldType

Tipe bidang indeks pencarian untuk kolom virtual. Tipe ini harus mematuhi aturan konversi yang didukung.

isVirtualField (wajib)

Boolean

Atur parameter ini ke true untuk mengidentifikasi bidang sebagai kolom virtual.

sourceFieldNames (wajib)

List<String>

Nama bidang sumber yang dipetakan ke kolom virtual. Saat ini hanya satu bidang sumber yang didukung. Konfigurasikan dengan setSourceFieldName.