All Products
Search
Document Center

Tablestore:Wildcard query

Last Updated:Jul 27, 2026

Kueri wildcard dengan Tablestore SDK for Java menggunakan pola * dan ? untuk mencocokkan data dalam bidang Keyword, Text, atau FuzzyKeyword.

Prasyarat

Instal Tablestore SDK for Java dan inisialisasi client.

Deskripsi fitur

Kueri wildcard mencocokkan bidang yang diindeks terhadap pola yang mengandung karakter wildcard. Semantik pencocokannya mirip dengan LIKE pada SQL, tetapi menggunakan * dan ? sebagai karakter wildcard. Untuk bidang Keyword atau FuzzyKeyword, pola tersebut dicocokkan terhadap seluruh nilai bidang. Untuk bidang Text, pola tersebut dicocokkan terhadap setiap token yang dihasilkan dari nilai bidang, sedangkan polanya sendiri tidak ditokenisasi. Untuk informasi lebih lanjut tentang tipe bidang yang didukung, lihat String types. Pencocokan bersifat case-sensitive.

Pola dapat diawali dengan karakter wildcard dan mendukung karakter wildcard berikut:

  • * mencocokkan nol atau lebih karakter.

  • ? mencocokkan satu karakter apa pun.

Sebagai contoh, table*e cocok dengan tablestore. Pola hang*u cocok dengan hangu dan hangzhou. Pola hang?u cocok dengan hangxu tetapi tidak cocok dengan hangu.

Untuk mencocokkan nilai yang mengandung string tertentu—misalnya dengan pola *word* (setara dengan WHERE field_a LIKE '%word%' pada SQL)—gunakan kueri wildcard berbasis token. Pendekatan ini menjaga kinerja kueri agar tidak menurun seiring pertumbuhan volume data.

Catatan

Untuk mengecualikan data yang sesuai dengan pola tertentu, tambahkan objek WildcardQuery ke BoolQuery.mustNotQueries. Konfigurasi ini setara dengan operator NOT LIKE pada SQL. Untuk informasi tentang konfigurasi BoolQuery, lihat Boolean query.

Tetapkan tipe kueri menjadi WildcardQuery saat memanggil search. Gunakan SearchQuery untuk mengonfigurasi batas hasil, pelacakan jumlah total, dan pengaturan kueri umum lainnya.

SearchResponse search(SearchRequest request)

Contoh berikut melakukan kueri terhadap nilai Keyword dalam bidang product_name yang sesuai dengan pola table*e. Kueri ini mengembalikan maksimal 10 baris dan jumlah total kecocokan.

String tableName = "example_table";
String indexName = "example_index";

WildcardQuery wildcardQuery = new WildcardQuery();
wildcardQuery.setFieldName("product_name");
wildcardQuery.setValue("table*e");

SearchQuery searchQuery = new SearchQuery();
searchQuery.setQuery(wildcardQuery);
searchQuery.setLimit(10);
searchQuery.setTrackTotalCount(SearchQuery.TRACK_TOTAL_COUNT);

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

Permintaan pencarian

request adalah objek SearchRequest yang berisi parameter berikut.

Name

Type

Description

tableName (required)

String

Nama tabel data.

indexName (required)

String

Nama indeks pencarian.

searchQuery (required)

SearchQuery

Kondisi kueri dan pengaturan kueri umum.

columnsToGet (optional)

SearchRequest.ColumnsToGet

Kolom yang akan dikembalikan. Jika parameter ini tidak dikonfigurasi, hanya kolom kunci primer yang dikembalikan.

timeoutInMillisecond (optional)

int

Timeout kueri tingkat permintaan dalam milidetik. Nilai default-nya adalah -1, yang berarti tidak mengonfigurasi timeout kueri terpisah.

routingValues (optional)

List<PrimaryKey>

Nilai kunci primer yang sesuai dengan bidang routing kustom. Biarkan parameter ini tidak diatur jika routing kustom tidak dikonfigurasi.

Pengaturan kueri

request.searchQuery adalah objek SearchQuery yang berisi parameter berikut.

Name

Type

Description

query (required)

Query

Kondisi kueri. Atur parameter ini ke objek WildcardQuery untuk kueri wildcard.

offset (optional)

Integer

Posisi awal kueri.

limit (optional)

Integer

Jumlah maksimum baris yang dikembalikan. Atur parameter ini ke 0 untuk tidak mengembalikan baris apa pun.

highlight (optional)

Highlight

Pengaturan ringkasan dan penyorotan untuk bidang Text. Untuk detail konfigurasi, lihat Summary and highlighting.

collapse (optional)

Collapse

Pengaturan collapse bidang, yang menghapus duplikat hasil berdasarkan bidang tertentu. Untuk detail konfigurasi, lihat Collapse query results.

sort (optional)

Sort

Urutan pengurutan hasil. Untuk detail konfigurasi, lihat Sort and paginate results.

trackTotalCount (optional)

int

Jumlah maksimum baris yang cocok yang diharapkan untuk dihitung. Nilai default-nya adalah TRACK_TOTAL_COUNT_DISABLED, yang menonaktifkan penghitungan. Atur parameter ini ke TRACK_TOTAL_COUNT untuk menghitung semua baris yang cocok. Nilai yang lebih kecil meningkatkan kinerja kueri.

filter (optional)

SearchFilter

Filter yang diterapkan pada hasil query.

aggregationList (optional)

List<Aggregation>

Pengaturan agregasi. Untuk detail konfigurasi, lihat Aggregation.

groupByList (optional)

List<GroupBy>

Pengaturan pengelompokan. Untuk detail konfigurasi, lihat Aggregation.

token (optional)

byte[]

Token paginasi. Atur parameter ini ke nilai nextToken dari respons sebelumnya untuk melanjutkan pembacaan baris. Saat Anda mengatur token, SDK mengosongkan sort karena token tersebut sudah berisi kondisi pengurutan.

Kondisi kueri

request.searchQuery.query adalah objek WildcardQuery yang berisi parameter berikut.

Name

Type

Description

fieldName (required)

String

Nama bidang Keyword, Text, atau FuzzyKeyword yang akan dikueri.

value (required)

String

Pola kueri yang mengandung karakter wildcard. Panjang maksimumnya adalah 32 karakter, dan pencocokan bersifat case-sensitive. Untuk bidang Keyword atau FuzzyKeyword, pola tersebut dicocokkan terhadap nilai bidang secara lengkap. Untuk bidang Text, pola tersebut dicocokkan terhadap setiap token, dan polanya sendiri tidak ditokenisasi.

weight (optional)

float

Bobot relevansi kondisi kueri. Nilainya harus berupa bilangan titik mengambang positif. Nilai yang lebih besar memberikan kontribusi lebih besar terhadap skor relevansi BM25. Parameter ini tidak memengaruhi pencocokan atau jumlah baris yang dikembalikan. Parameter ini hanya memengaruhi urutan hasil ketika ScoreSort digunakan untuk mengurutkan berdasarkan skor relevansi. Nilai default: 1.0.

Kolom yang dikembalikan

request.columnsToGet adalah objek SearchRequest.ColumnsToGet yang berisi parameter berikut.

Name

Type

Description

columns (optional)

List<String>

Kolom atribut yang akan dikembalikan. Atur parameter ini hanya jika returnAll dan returnAllFromIndex keduanya bernilai false. Jika Anda mengabaikan parameter ini, hanya kolom kunci primer yang dikembalikan.

returnAll (optional)

boolean

Menentukan apakah akan mengembalikan semua kolom atribut dari tabel data. Nilai default-nya adalah false.

returnAllFromIndex (optional)

boolean

Menentukan apakah akan mengembalikan semua kolom atribut yang diindeks. Nilai default-nya adalah false. Jangan atur kedua parameter returnAll dan returnAllFromIndex ke true secara bersamaan.

Nilai kembalian

search mengembalikan objek SearchResponse. Tabel berikut menjelaskan bidang intinya.

Name

Type

Description

totalCount

long

Jumlah baris yang cocok. Panggil getTotalCount() untuk memperoleh nilainya. Nilai yang dikembalikan bergantung pada pengaturan trackTotalCount.

rows

List<Row>

Baris yang dikembalikan oleh kueri ini. Panggil getRows() untuk memperoleh nilainya. Jumlah baris tidak melebihi limit.

searchHits

List<SearchHit>

Hasil hit kueri. Panggil getSearchHits() untuk memperoleh nilainya. Jika highlight dikonfigurasi, bidang ini berisi data baris serta hasil ringkasan dan penyorotan.

nextToken

byte[]

Token halaman berikutnya. Panggil getNextToken() untuk memperoleh nilainya. Jika nilainya bukan null, atur sebagai token dalam permintaan berikutnya untuk melanjutkan pembacaan baris.

isAllSuccess

boolean

Menunjukkan apakah semua partisi indeks berhasil dikueri. Panggil isAllSuccess() untuk memperoleh nilainya. Jika nilainya false, respons berisi hasil parsial dan totalCount mungkin kurang dari jumlah aktual baris yang cocok.