All Products
Search
Document Center

Tablestore:Collapse (menghapus duplikat)

Last Updated:Aug 29, 2026

Fitur collapse melakukan deduplikasi pada set hasil kueri berdasarkan kolom tertentu sehingga setiap nilai unik hanya muncul sekali dalam hasil yang dikembalikan. Gunakan fitur ini untuk menjaga keragaman hasil kueri ketika satu kategori mendominasi set hasil.

Fitur collapse dapat mencapai deduplikasi (Distinct) di sebagian besar skenario, setara dengan melakukan deduplikasi berdasarkan kolom collapse. Namun, fitur ini hanya berlaku untuk kolom bertipe integer, bilangan titik mengambang, dan Keyword, tidak mendukung kolom bertipe array, serta hanya dapat mengembalikan maksimal 100.000 hasil terurut pertama.

Batasan penggunaan

Sebelum menggunakan fitur collapse, perhatikan batasan berikut:

  • Tipe kolom yang didukung — Fitur collapse hanya berlaku untuk kolom bertipe integer, bilangan titik mengambang, dan Keyword. Kolom bertipe array tidak didukung.

  • Paginasi — Fitur collapse hanya mendukung paginasi menggunakan offset dan limit. Paginasi berbasis token tidak didukung.

  • Agregasi — Saat Anda menggunakan agregasi statistik bersama fitur collapse, agregasi hanya diterapkan pada set hasil sebelum operasi collapse.

  • Batas jumlah kelompok — Setelah operasi collapse, jumlah total kelompok yang dikembalikan bergantung pada nilai maksimum dari offset ditambah limit. Maksimal 100.000 kelompok dapat dikembalikan.

  • Jumlah total — Jumlah total baris dalam respons adalah jumlah baris yang sesuai sebelum operasi collapse. Anda tidak dapat memperoleh jumlah total kelompok setelah operasi collapse.

Parameter

Fitur collapse disediakan oleh operasi Search dan diimplementasikan menggunakan parameter collapse. Tabel berikut menjelaskan parameter yang digunakan dalam kueri collapse.

Parameter Deskripsi
query Tipe kueri apa pun.
collapse Pengaturan collapse, yang mencakup pengaturan fieldName. fieldName: nama kolom yang digunakan untuk melakukan collapse pada set hasil. Parameter ini hanya berlaku untuk kolom bertipe integer, bilangan titik mengambang, dan Keyword. Kolom bertipe array tidak didukung.
offset Posisi awal kueri saat ini.
limit Jumlah maksimum baris yang dikembalikan untuk kueri saat ini. Jika Anda hanya ingin memperoleh jumlah baris tanpa memerlukan datanya, atur limit ke 0. Tidak ada baris yang dikembalikan.
getTotalCount Menentukan apakah jumlah total baris yang sesuai akan dikembalikan. Nilai default-nya adalah false, yang berarti jumlah total baris yang sesuai tidak dikembalikan. Mengembalikan jumlah total baris yang sesuai memengaruhi performa kueri.
tableName Nama tabel data.
indexName Nama indeks pencarian.
columnsToGet Menentukan apakah semua kolom akan dikembalikan. Parameter ini mencakup pengaturan returnAll dan columns. Nilai default returnAll adalah false, yang berarti tidak semua kolom dikembalikan. Dalam hal ini, Anda dapat menggunakan columns untuk menentukan kolom yang akan dikembalikan. Jika Anda tidak menggunakan columns untuk menentukan kolom yang akan dikembalikan, hanya kolom kunci primer yang dikembalikan. Jika Anda mengatur returnAll ke true, semua kolom akan dikembalikan.

Penggunaan

Anda dapat menggunakan antarmuka baris perintah atau SDK untuk melakukan collapse pada hasil saat mengkueri data.

Gunakan antarmuka baris perintah

Jalankan perintah search di antarmuka baris perintah untuk mengkueri data menggunakan indeks pencarian, dan konfigurasikan parameter Collapse dalam kondisi kueri untuk menggunakan fitur collapse. Untuk informasi selengkapnya, lihat Indeks pencarian.

  • Jalankan perintah search untuk mengkueri data dalam tabel menggunakan indeks pencarian dan mengembalikan semua kolom yang diindeks.

search -n search_index --return_all_indexed
  • Masukkan kondisi kueri saat diminta. Contoh kodenya sebagai berikut:

{
    "Offset": -1,
    "Limit": 10,
    "Collapse": {
        "FieldName": "product_name"
    },
    "Sort": null,
    "GetTotalCount": true,
    "Token": null,
    "Query": {
        "Name": "MatchQuery",
        "Query": {
            "FieldName": "user_id",
            "Text": "00002",
            "MinimumShouldMatch": 1
        }
    }
}

Tabel berikut menjelaskan field utama dalam contoh tersebut:

Field Deskripsi
Offset Posisi awal kueri. Nilai -1 menunjukkan bahwa tidak ada offset yang diterapkan.
Limit Jumlah maksimum baris yang dikembalikan.
Collapse.FieldName Nama kolom yang digunakan untuk melakukan deduplikasi hasil. Dalam contoh ini, product_name digunakan sebagai kolom collapse. Ganti nilai ini dengan nama kolom target Anda.
Query Kondisi kueri. Contoh ini menggunakan MatchQuery pada kolom user_id. Ganti nama field dan teks kueri dengan nilai Anda sendiri.

Setelah kueri mengembalikan hasil, verifikasi bahwa fitur collapse bekerja sesuai harapan dengan memeriksa bahwa nilai-nilai dalam kolom collapse bersifat unik di seluruh baris yang dikembalikan.

Gunakan SDK

Anda dapat menggunakan Java SDK, Go SDK, Python SDK, Node.js SDK, .NET SDK, atau PHP SDK untuk melakukan collapse pada hasil saat mengkueri data. Contoh berikut menggunakan Java SDK untuk menjelaskan cara menggunakan fitur collapse.

Contoh berikut mengkueri semua baris, melakukan collapse pada hasil berdasarkan field category, dan mengurutkan baris berdasarkan field price secara menurun. Baris dengan harga tertinggi di setiap kategori akan 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());

Kueri data

Dalam Mode VCU (sebelumnya Mode Reserved), mengkueri data menggunakan indeks pencarian mengonsumsi sumber daya komputasi VCU. Dalam Mode CU (sebelumnya Mode Pay-As-You-Go), mengkueri data menggunakan indeks pencarian mengonsumsi throughput baca. Untuk informasi selengkapnya, lihat Penagihan indeks pencarian.

Mengkueri data menggunakan indeks pencarian mengonsumsi throughput baca. Untuk informasi selengkapnya, lihat Item yang dapat ditagih untuk indeks pencarian.

Menggunakan fitur collapse saat mengkueri data tidak memengaruhi aturan penagihan yang sudah ada.

FAQ

Referensi