All Products
Search
Document Center

Tablestore:Kueri JSON

Last Updated:Aug 07, 2026

Gunakan Tablestore SDK untuk Python untuk mengkueri bidang turunan dari bidang JSON Object atau Nested dalam indeks pencarian.

Prasyarat

Instal Tablestore SDK untuk Python dan inisialisasi klien.

Bidang target harus dikonfigurasi sebagai bidang JSON Object atau Nested dalam indeks pencarian. Untuk informasi selengkapnya, lihat Buat indeks pencarian.

Deskripsi

Kueri JSON tidak memiliki jenis kueri khusus. Pilih metode kueri berdasarkan json_type bidang JSON dalam indeks pencarian.

Jenis JSON

Deskripsi

Object

Tidak mempertahankan batas objek turunan dalam array. Gunakan langsung jenis kueri yang sesuai dengan tipe bidang turunan dan kebutuhan pencocokan, serta tentukan path lengkap bidang turunan tersebut. Kondisi yang berbeda dapat dipenuhi oleh objek turunan yang berbeda.

Nested

Memperlakukan setiap objek turunan dalam array sebagai baris turunan independen dan mempertahankan hubungan antar-bidang. Bungkus kueri turunan dalam NestedQuery dan tentukan path bidang Nested dalam path. Semua kondisi dalam harus dipenuhi oleh baris turunan yang sama.

Sebagai contoh, asumsikan array address berisi {"country":"China","city":"hangzhou"} dan {"country":"usa","city":"Seattle"}. Kueri untuk country=China dan city=Seattle cocok dengan baris tersebut jika bidangnya bertipe Object, tetapi tidak cocok jika bidangnya bertipe Nested.

Catatan

Bidang turunan dari bidang JSON tidak dapat berupa bidang Vector.

Kueri bidang Object

Contoh berikut mengkueri baris-baris di mana profile.name bernilai alice dan profile.score lebih besar dari atau sama dengan 80.

query = BoolQuery(
    must_queries=[
        TermQuery("profile.name", "alice"),
        RangeQuery("profile.score", range_from=80),
    ]
)
response = client.search(
    "example_table",
    "example_index",
    SearchQuery(query, limit=10),
)
print(response.rows)

Kueri bidang Nested

Contoh berikut mensyaratkan objek turunan yang sama dalam address memiliki nilai address.country sama dengan China dan address.city sama dengan Seattle. Untuk konfigurasi lainnya, lihat Kueri Nested.

child_query = BoolQuery(
    must_queries=[
        TermQuery("address.country", "China"),
        TermQuery("address.city", "Seattle"),
    ]
)
query = NestedQuery("address", child_query)
response = client.search(
    "example_table",
    "example_index",
    SearchQuery(query, limit=10),
)
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

Untuk bidang Object, tentukan kueri yang sesuai dengan tipe bidang turunan. Untuk bidang Nested, tentukan NestedQuery.

sort (opsional)

Sort

Urutan pengurutan hasil. Untuk informasi selengkapnya, lihat Urutkan dan laman hasil.

get_total_count (opsional)

bool

Menentukan apakah jumlah total baris yang cocok dikembalikan. Nilai default: False. Mengatur parameter ini ke True meningkatkan beban kueri.

next_token (opsional)

bytes

Token paginasi. Teruskan next_token dari respons sebelumnya untuk mengambil halaman berikutnya.

offset (opsional)

int

Offset tempat kueri dimulai. Gunakan parameter ini untuk paginasi dangkal.

limit (opsional)

int

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

aggs (opsional)

list[Agg]

Konfigurasi agregasi metrik. Untuk informasi selengkapnya, lihat Agregasi.

group_bys (opsional)

list[BaseGroupBy]

Konfigurasi pengelompokan. Untuk informasi selengkapnya, lihat Agregasi.

collapse_field (opsional)

Collapse

Konfigurasi collapse hasil. Untuk informasi selengkapnya, lihat Collapse hasil kueri.

highlight (opsional)

Highlight

Konfigurasi ringkasan dan penyorotan untuk bidang Text. Untuk informasi selengkapnya, lihat Ringkasan dan penyorotan.

Kolom yang dikembalikan

columns_to_get bertipe ColumnsToGet dan mencakup parameter berikut.

Nama

Tipe

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 SearchResponse. Tabel berikut menjelaskan bidang intinya.

Bidang

Tipe

Deskripsi

rows

list[Row]

Baris-baris yang dikembalikan oleh kueri. Jumlahnya tidak melebihi limit.

next_token

bytes

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

total_count

int

Jumlah baris yang cocok. Nilainya bergantung pada get_total_count.

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]

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

Respons kompatibel Tupel

Mulai Tablestore SDK untuk Python versi 5.2.0, 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()