All Products
Search
Document Center

Tablestore:Range query

Last Updated:Jul 27, 2026

Kueri rentang pada indeks pencarian dengan Tablestore SDK for Java memfilter data berdasarkan batas bawah dan atas nilai bidang, serta memungkinkan Anda menentukan apakah masing-masing batas tersebut disertakan atau tidak.

Prasyarat

Instal Tablestore SDK for Java dan inisialisasi klien.

Deskripsi fitur

Kueri rentang mencocokkan baris yang nilai bidang terindeksnya berada dalam interval tertentu. Anda dapat menetapkan hanya batas bawah, hanya batas atas, atau kedua batas tersebut—namun setidaknya satu batas wajib ditentukan. Untuk bidang Text, suatu baris cocok jika salah satu token yang dihasilkan dari nilai bidang tersebut berada dalam interval tersebut.

Gunakan greaterThan, greaterThanOrEqual, lessThan, dan lessThanOrEqual untuk menentukan kondisi lebih besar dari, lebih besar dari atau sama dengan, lebih kecil dari, dan lebih kecil dari atau sama dengan. Atur jenis kueri menjadi RangeQuery saat memanggil metode search.

SearchResponse search(SearchRequest request)

Contoh berikut melakukan kueri terhadap nilai Long pada bidang price yang berada dalam interval setengah terbuka [100, 500). Kueri ini mengembalikan maksimal 10 baris dan jumlah total kecocokan.

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

RangeQuery rangeQuery = new RangeQuery();
rangeQuery.setFieldName("price");
rangeQuery.greaterThanOrEqual(ColumnValue.fromLong(100L));
rangeQuery.lessThan(ColumnValue.fromLong(500L));

SearchQuery searchQuery = new SearchQuery();
searchQuery.setQuery(rangeQuery);
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 RangeQuery untuk kueri rentang.

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 hasil berdasarkan bidang tertentu untuk menghapus duplikat. 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 performa 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 akan mengosongkan sort karena token tersebut sudah berisi kondisi pengurutan.

Kondisi kueri

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

Name

Type

Description

fieldName (required)

String

Nama bidang terindeks yang akan dikueri. Kueri rentang mendukung bidang Long, Double, Boolean, Keyword, Text, Date, dan IP, serta subfield dari bidang JSON Object. Untuk bidang Text, suatu baris cocok jika salah satu token-nya berada dalam interval tersebut.

from (optional)

ColumnValue

Batas bawah. Setidaknya salah satu dari from dan to wajib diisi. Panggil greaterThan atau greaterThanOrEqual untuk mengatur batas bawah dan apakah batas tersebut disertakan.

to (optional)

ColumnValue

Batas atas. Setidaknya salah satu dari from dan to wajib diisi. Panggil lessThan atau lessThanOrEqual untuk mengatur batas atas dan apakah batas tersebut disertakan.

includeLower (optional)

boolean

Menentukan apakah from disertakan. Nilai default-nya adalah false. greaterThan mengatur parameter ini ke false, sedangkan greaterThanOrEqual mengaturnya ke true.

includeUpper (optional)

boolean

Menentukan apakah to disertakan. Nilai default-nya adalah false. lessThan mengatur parameter ini ke false, sedangkan lessThanOrEqual mengaturnya ke true.

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 semua kolom atribut dari tabel data akan dikembalikan. Nilai default-nya adalah false.

returnAllFromIndex (optional)

boolean

Menentukan apakah semua kolom atribut terindeks akan dikembalikan. Nilai default-nya adalah false. Jangan atur returnAll dan returnAllFromIndex keduanya ke true.

Nilai kembalian

search mengembalikan objek SearchResponse. Tabel berikut menjelaskan field intinya.

Name

Type

Description

totalCount

long

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

rows

List<Row>

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

searchHits

List<SearchHit>

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

nextToken

byte[]

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

isAllSuccess

boolean

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

Contoh skenario

Kueri tanggal dalam format kustom

Jika date_string adalah bidang String di tabel data dan dipetakan ke bidang Date di indeks pencarian dengan format yyyy-MM-dd HH:mm:ss, gunakan string dalam format yang sama sebagai batas kueri. Contoh berikut melakukan kueri terhadap interval [2021-01-01 00:00:00, 2023-01-01 00:00:00).

RangeQuery rangeQuery = new RangeQuery();
rangeQuery.setFieldName("date_string");
rangeQuery.greaterThanOrEqual(ColumnValue.fromString("2021-01-01 00:00:00"));
rangeQuery.lessThan(ColumnValue.fromString("2023-01-01 00:00:00"));

Kueri timestamp epoch-second

Jika date_epoch adalah bidang Integer di tabel data dan dipetakan ke bidang Date di indeks pencarian dengan format epoch_second, gunakan timestamp epoch-second sebagai batas kueri. Contoh berikut melakukan kueri terhadap nilai yang lebih besar dari 1609459200.

RangeQuery rangeQuery = new RangeQuery();
rangeQuery.setFieldName("date_epoch");
rangeQuery.greaterThan(ColumnValue.fromLong(1609459200L));