All Products
Search
Document Center

Tablestore:Ciutkan hasil kueri

Last Updated:Jul 29, 2026

Saat melakukan kueri terhadap search index menggunakan Tablestore SDK untuk Java, Anda dapat menciutkan hasil berdasarkan bidang tertentu sehingga hanya satu baris dikembalikan untuk setiap nilai bidang yang berbeda.

Prasyarat

Instal Tablestore SDK untuk Java dan inisialisasi klien.

Cara kerja

Field collapse mengelompokkan baris yang cocok berdasarkan nilai bidang search index tertentu dan mengembalikan satu baris representatif dari setiap kelompok. Urutan pengurutan efektif menentukan baris yang dikembalikan dari setiap kelompok. Anda dapat menggunakan pengurutan dan paginasi untuk mengonfigurasi urutan tersebut. Field collapse hanya mengubah cara hasil kueri ditampilkan dan tidak memodifikasi data di tabel.

Penting
  • Pengurutan dan agregasi harus diaktifkan untuk bidang collapse. Bidang tersebut harus berupa bidang non-array dengan tipe Keyword, Long, atau Double.

  • Kueri collapse hanya mendukung paginasi berbasis limit dan offset. Paginasi berbasis token tidak didukung. Jumlah dari limit dan offset tidak boleh melebihi 100000.

  • Agregasi dan group-by beroperasi pada hasil yang cocok sebelum collapse. Total jumlah baris juga merupakan jumlah baris yang cocok sebelum collapse. Jumlah total kelompok setelah collapse tidak dapat diperoleh.

Panggil metode search untuk melakukan kueri data dan konfigurasikan SearchQuery.collapse guna menentukan bidang collapse.

SearchResponse search(SearchRequest request)

Contoh berikut melakukan kueri terhadap semua baris, menciutkan hasil berdasarkan bidang category, dan mengurutkan baris berdasarkan bidang price secara menurun. Baris dengan harga tertinggi dalam setiap kategori dikembalikan.

SearchQuery searchQuery = new SearchQuery();
searchQuery.setQuery(new MatchAllQuery());
searchQuery.setLimit(10);
searchQuery.setCollapse(new Collapse("category"));
searchQuery.setSort(new Sort(
        Arrays.asList(new FieldSort("price", SortOrder.DESC))));

SearchRequest.ColumnsToGet columnsToGet =
        new SearchRequest.ColumnsToGet();
columnsToGet.setColumns(Arrays.asList("category", "price"));

SearchRequest request =
        new SearchRequest("example_table", "example_index", searchQuery);
request.setColumnsToGet(columnsToGet);

SearchResponse response = client.search(request);
System.out.println(response.getRows());

Parameter

Permintaan kueri

Tipe request adalah SearchRequest. Tabel berikut menjelaskan parameter-parameternya.

Nama

Tipe

Deskripsi

tableName (wajib)

String

Nama tabel data.

indexName (wajib)

String

Nama search index.

searchQuery (wajib)

SearchQuery

Kondisi kueri dan konfigurasi collapse.

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: -1, yang menunjukkan bahwa tidak ada timeout kueri terpisah yang dikonfigurasi.

routingValues (opsional)

List<PrimaryKey>

Nilai kunci primer dari bidang routing kustom. Anda tidak perlu mengonfigurasi parameter ini jika routing kustom tidak digunakan.

Konfigurasi kueri

Tipe request.searchQuery adalah SearchQuery. Tabel berikut menjelaskan parameter-parameternya.

Nama

Tipe

Deskripsi

query (wajib)

Query

Kondisi kueri. Jenis kueri search index didukung.

collapse (wajib)

Collapse

Konfigurasi collapse.

offset (opsional)

Integer

Posisi kelompok tempat kueri saat ini dimulai. Nilai default: 0. Jumlah parameter ini dan limit tidak boleh melebihi 100000.

limit (opsional)

Integer

Jumlah maksimum kelompok yang dikembalikan. Nilai default: 10. Jika parameter ini bernilai 0, tidak ada baris yang dikembalikan. Nilai maksimum adalah 1000 jika semua kolom yang dikembalikan dibaca dari search index, atau 100 jika ada kolom yang dikembalikan harus dibaca dari tabel data.

highlight (opsional)

Highlight

Konfigurasi ringkasan dan penyorotan. Apakah hasil yang disorot dikembalikan bergantung pada jenis kueri dan konfigurasi bidang indeks.

sort (opsional)

Sort

Urutan pengurutan hasil, yang menentukan baris representatif yang dikembalikan dari setiap kelompok dan urutan kelompok-kelompok tersebut. Jika parameter ini tidak dikonfigurasi, pengurutan indeks digunakan.

trackTotalCount (opsional)

int

Jumlah maksimum baris yang cocok yang diharapkan untuk dihitung. Nilai default: TRACK_TOTAL_COUNT_DISABLED, yang menonaktifkan penghitungan. Atur nilai ke TRACK_TOTAL_COUNT untuk menghitung semua baris yang cocok sebelum collapse. Nilai yang lebih kecil memberikan kinerja kueri yang lebih baik.

filter (opsional)

SearchFilter

Filter yang diterapkan pada hasil query.

aggregationList (opsional)

List<Aggregation>

Konfigurasi agregasi. Agregasi beroperasi pada hasil yang cocok sebelum collapse.

groupByList (opsional)

List<GroupBy>

Konfigurasi group-by. Group-by beroperasi pada hasil yang cocok sebelum collapse.

token (opsional)

byte[]

Token paginasi. Jangan mengonfigurasi parameter ini saat menggunakan field collapse.

Konfigurasi collapse

Tipe request.searchQuery.collapse adalah Collapse. Tabel berikut menjelaskan parameternya.

Nama

Tipe

Deskripsi

fieldName (wajib)

String

Nama bidang collapse. Pengurutan dan agregasi harus diaktifkan untuk bidang ini, dan bidang tersebut harus berupa bidang non-array dengan tipe Keyword, Long, atau Double.

Kolom yang dikembalikan

Tipe request.columnsToGet adalah SearchRequest.ColumnsToGet. Tabel berikut menjelaskan parameter-parameternya.

Nama

Type

Deskripsi

columns (opsional)

List<String>

Nama kolom atribut yang akan dikembalikan. Konfigurasikan parameter ini hanya jika returnAll dan returnAllFromIndex keduanya bernilai false. Jika parameter ini tidak dikonfigurasi, hanya kolom kunci primer yang dikembalikan.

returnAll (opsional)

boolean

Menentukan apakah semua kolom atribut di tabel data akan dikembalikan. Nilai default: false.

returnAllFromIndex (opsional)

boolean

Menentukan apakah semua kolom atribut yang disimpan di search index akan dikembalikan. Nilai default: false. Jangan mengatur parameter ini dan returnAll sekaligus menjadi true.

Respons

Metode search mengembalikan SearchResponse. Tabel berikut menjelaskan bidang-bidang yang terkait dengan field collapse.

Nama

Tipe

Deskripsi

totalCount

long

Jumlah baris yang cocok sebelum collapse. Panggil getTotalCount() untuk memperoleh nilainya. Nilai ini bergantung pada trackTotalCount dan tidak menunjukkan jumlah kelompok setelah collapse.

rows

List<Row>

Baris setelah collapse. Panggil getRows() untuk memperoleh nilainya. Paling banyak satu baris dikembalikan untuk setiap nilai bidang collapse yang berbeda.

searchHits

List<SearchHit>

Hasil pencarian setelah collapse. Panggil getSearchHits() untuk memperoleh nilainya.

isAllSuccess

boolean

Menunjukkan apakah semua partisi indeks telah dikueri. Panggil isAllSuccess() untuk memperoleh nilainya. Jika bidang ini bernilai false, respons berisi hasil parsial.

aggregationResults

AggregationResults

Hasil agregasi yang dihitung dari baris yang cocok sebelum collapse. Panggil getAggregationResults() untuk memperoleh nilainya. Bidang ini dikembalikan hanya jika aggregationList dikonfigurasi.

groupByResults

GroupByResults

Hasil group-by yang dihitung dari baris yang cocok sebelum collapse. Panggil getGroupByResults() untuk memperoleh nilainya. Bidang ini dikembalikan hanya jika groupByList dikonfigurasi.