All Products
Search
Document Center

Tablestore:Ciutkan hasil kueri

Last Updated:Aug 07, 2026

Gunakan Tablestore SDK untuk Python untuk menciutkan hasil indeks pencarian berdasarkan bidang tertentu dan mengembalikan satu baris untuk setiap nilai bidang yang berbeda.

Prasyarat

Pasang Tablestore SDK untuk Python dan inisialisasi klien.

Deskripsi

Fitur Collapse mengelompokkan baris yang cocok berdasarkan bidang indeks pencarian tertentu dan mengembalikan satu baris representatif untuk setiap nilai bidang yang berbeda. Baris yang dikembalikan dari setiap kelompok ditentukan oleh urutan pengurutan kueri. Untuk informasi selengkapnya, lihat Sort and paginate results. Collapse hanya memengaruhi hasil kueri dan tidak mengubah tabel.

Penting

Bidang collapse harus memiliki sorting dan agregasi yang diaktifkan serta harus berupa bidang non-array bertipe Keyword, Long, atau Double. Kueri collapse hanya mendukung paginasi menggunakan parameter limit dan offset, bukan next_token. Nilai limit + offset tidak boleh melebihi 100000. Agregasi, pengelompokan, dan jumlah total baris yang cocok didasarkan pada hasil sebelum collapse. Respons tidak menyertakan jumlah total kelompok yang telah dicollapse.

Contoh berikut menciutkan hasil berdasarkan bidang category dan mengurutkannya berdasarkan price secara menurun. Dengan demikian, baris dengan harga tertinggi dikembalikan untuk setiap kategori.

query = MatchAllQuery()
search_query = SearchQuery(
    query,
    sort=Sort([FieldSort("price", SortOrder.DESC)]),
    collapse_field=Collapse("category"),
    limit=10,
    get_total_count=True,
)
response = client.search(
    "example_table",
    "example_index",
    search_query,
    ColumnsToGet(
        ["category", "price"],
        ColumnReturnType.SPECIFIED,
    ),
)
print(response.total_count)
print(response.rows)

Parameter

Permintaan pencarian

Metode search mencakup parameter berikut.

Nama

Tipe

Deskripsi

table_name (wajib)

str

Nama tabel data.

index_name (wajib)

str

Nama indeks pencarian.

search_query (wajib)

SearchQuery

Kondisi kueri dan konfigurasi kueri umum.

columns_to_get (opsional)

ColumnsToGet

Konfigurasi kolom yang dikembalikan. Jika parameter ini tidak ditentukan, hanya kolom kunci primer yang dikembalikan.

routing_keys (opsional)

list

Nilai kunci primer dari bidang routing kustom. Parameter ini tidak diperlukan jika routing kustom tidak dikonfigurasi.

timeout_s (opsional)

int

Timeout permintaan dalam detik. Jika parameter ini tidak ditentukan, timeout tingkat client yang digunakan.

Konfigurasi kueri

search_query bertipe SearchQuery dan mencakup parameter berikut.

Nama

Tipe

Deskripsi

query (wajib)

Query

Kondisi kueri. Tentukan tipe Query berdasarkan kebutuhan pencocokan Anda.

sort (opsional)

Sort

Urutan pengurutan hasil. Untuk informasi selengkapnya, lihat Sort and paginate results.

get_total_count (opsional)

bool

Menentukan apakah akan mengembalikan jumlah total baris yang cocok. Nilai default: False. Menyetel parameter ini ke True meningkatkan beban kueri.

next_token (opsional)

bytes

Jangan tentukan parameter ini untuk kueri collapse.

offset (opsional)

int

Posisi awal kelompok. Nilai default: 0. Jumlah parameter ini dan limit tidak boleh melebihi 100000.

limit (opsional)

int

Jumlah maksimum baris yang dikembalikan. Jika parameter ini disetel ke 0, tidak ada baris yang dikembalikan.

aggs (opsional)

list[Agg]

Konfigurasi agregasi metrik. Untuk informasi selengkapnya, lihat Aggregation.

group_bys (opsional)

list[BaseGroupBy]

Konfigurasi pengelompokan. Untuk informasi selengkapnya, lihat Aggregation.

collapse_field (wajib)

Collapse

Konfigurasi collapse hasil.

highlight (opsional)

Highlight

Konfigurasi ringkasan dan penyorotan untuk bidang Text. Untuk informasi selengkapnya, lihat Summary and highlighting.

Konfigurasi collapse

search_query.collapse_field bertipe Collapse dan mencakup parameter berikut.

Nama

Tipe

Deskripsi

field_name (wajib)

str

Nama bidang collapse. Sorting dan agregasi harus diaktifkan untuk bidang non-array Keyword, Long, atau Double ini.

Kolom yang dikembalikan

columns_to_get bertipe ColumnsToGet dan mencakup parameter berikut.

Nama

Type

Deskripsi

column_names (opsional)

list[str]

Nama kolom atribut yang dikembalikan. Tentukan parameter ini hanya ketika return_type bernilai SPECIFIED.

return_type (opsional)

ColumnReturnType

Mode kolom yang dikembalikan. NONE (default) hanya mengembalikan kolom kunci primer; SPECIFIED mengembalikan kolom atribut yang ditentukan; ALL mengembalikan semua kolom atribut dalam tabel; dan ALL_FROM_INDEX mengembalikan semua bidang yang disimpan dalam indeks.

Respons

Metode search mengembalikan objek SearchResponse. Tabel berikut menjelaskan bidang utamanya.

Bidang

Tipe

Deskripsi

rows

list[Row]

Baris setelah collapse. Paling banyak satu baris dikembalikan untuk setiap nilai bidang collapse yang berbeda.

next_token

bytes

Token untuk halaman berikutnya. Nilai kosong menunjukkan bahwa tidak ada data tambahan yang tersedia.

total_count

int

Jumlah baris yang cocok sebelum collapse. Nilainya bergantung pada get_total_count dan bukan jumlah kelompok yang telah dicollapse.

is_all_succeed

bool

Menunjukkan apakah semua partisi indeks telah dikueri. Jika nilainya False, hasil parsial dikembalikan.

agg_results

list[AggResult]

Hasil agregasi metrik. Bidang ini kosong jika aggs tidak dikonfigurasi.

group_by_results

list[GroupByResult]

Hasil pengelompokan. Bidang ini kosong jika group_bys tidak dikonfigurasi.

search_hits

list[SearchHit]

Hit pencarian, termasuk informasi tambahan seperti baris, skor relevansi, dan sorotan.

Respons kompatibel tupel

Mulai versi 5.2.0 Tablestore SDK untuk Python, API pencarian mengembalikan objek respons, bukan tupel. Versi 5.1.0 dan sebelumnya mengembalikan tupel secara langsung. Pada versi 5.2.1 dan seterusnya, Anda dapat memanggil SearchResponse.v1_response() untuk mendapatkan tupel yang kompatibel dengan versi sebelumnya. Untuk kode baru, akses atribut SearchResponse secara langsung guna menghindari kesalahan unpacking jika bidang respons diperluas.

(
    rows,
    next_token,
    total_count,
    is_all_succeed,
    agg_results,
    group_by_results,
    search_hits,
) = response.v1_response()