All Products
Search
Document Center

Tablestore:Kueri Exists

Last Updated:Jul 27, 2026

Kueri exists menggunakan Tablestore SDK for Java memfilter data berdasarkan keberadaan bidang tertentu.

Prasyarat

Instal Tablestore SDK for Java dan inisialisasi klien.

Deskripsi fitur

Kueri exists (ExistsQuery), juga dikenal sebagai kueri NULL atau kueri nilai null, mencocokkan baris yang memiliki bidang terindeks tertentu. Suatu bidang dianggap tidak ada jika kolom yang bersesuaian belum ditulis ke tabel data. Array kosong juga dianggap sebagai bidang array yang tidak ada.

Saat memanggil search, atur jenis kueri menjadi ExistsQuery dan tentukan nama bidangnya. Untuk mengkueri bidang induk Nested atau subbidangnya, bungkus ExistsQuery dalam NestedQuery. Untuk mencocokkan baris yang tidak memiliki bidang tertentu, tambahkan ExistsQuery ke BoolQuery.mustNotQueries.

SearchResponse search(SearchRequest request)

Contoh berikut mengkueri baris yang memiliki bidang city. Kueri ini mengembalikan hingga 10 baris serta jumlah total kecocokan.

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

ExistsQuery existsQuery = new ExistsQuery();
existsQuery.setFieldName("city");

SearchQuery searchQuery = new SearchQuery();
searchQuery.setQuery(existsQuery);
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.

Nama

Tipe

Deskripsi

tableName (wajib)

String

Nama tabel data.

indexName (wajib)

String

Nama indeks pencarian.

searchQuery (wajib)

SearchQuery

Kondisi kueri dan pengaturan umum kueri.

columnsToGet (opsional)

SearchRequest.ColumnsToGet

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

timeoutInMillisecond (opsional)

int

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

routingValues (opsional)

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.

Nama

Tipe

Deskripsi

query (wajib)

Query

Kondisi kueri. Atur parameter ini ke objek ExistsQuery untuk kueri exists.

offset (opsional)

Integer

Posisi awal kueri.

limit (opsional)

Integer

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

collapse (opsional)

Collapse

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

sort (opsional)

Sort

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

trackTotalCount (opsional)

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 (opsional)

SearchFilter

Filter yang diterapkan pada hasil query.

aggregationList (opsional)

List<Aggregation>

Pengaturan agregasi. Untuk detail konfigurasi, lihat Aggregation.

groupByList (opsional)

List<GroupBy>

Pengaturan pengelompokan. Untuk detail konfigurasi, lihat Aggregation.

token (opsional)

byte[]

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

Kondisi kueri

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

Nama

Tipe

Deskripsi

fieldName (wajib)

String

Nama bidang terindeks yang akan dikueri.

Kolom yang dikembalikan

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

Nama

Tipe

Deskripsi

columns (opsional)

List<String>

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

returnAll (opsional)

boolean

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

returnAllFromIndex (opsional)

boolean

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

Nilai kembalian

search mengembalikan objek SearchResponse. Tabel berikut menjelaskan bidang intinya.

Nama

Tipe

Deskripsi

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 hit kueri. Panggil getSearchHits() untuk mendapatkan nilainya.

nextToken

byte[]

Token halaman berikutnya. Panggil getNextToken() untuk mendapatkan nilainya. Jika nilainya bukan null, atur sebagai token dalam permintaan berikutnya untuk melanjutkan membaca 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

Mengkueri baris yang tidak memiliki bidang tertentu

Tambahkan ExistsQuery ke BoolQuery.mustNotQueries untuk mencocokkan baris yang tidak memiliki bidang city.

ExistsQuery existsQuery = new ExistsQuery();
existsQuery.setFieldName("city");

BoolQuery boolQuery = new BoolQuery();
boolQuery.setMustNotQueries(Collections.singletonList(existsQuery));

SearchQuery searchQuery = new SearchQuery();
searchQuery.setQuery(boolQuery);

Mengkueri bidang Nested

Bungkus ExistsQuery dalam NestedQuery. Untuk mengkueri bidang induk, atur fieldName ke items. Untuk mengkueri subbidang, tentukan path lengkapnya, seperti items.keyword. Contoh berikut mengkueri baris yang memiliki subbidang items.keyword.

ExistsQuery existsQuery = new ExistsQuery();
existsQuery.setFieldName("items.keyword");

NestedQuery nestedQuery = new NestedQuery();
nestedQuery.setPath("items");
nestedQuery.setQuery(existsQuery);
nestedQuery.setScoreMode(ScoreMode.None);

SearchQuery searchQuery = new SearchQuery();
searchQuery.setQuery(nestedQuery);