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 |
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.
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) |
|
Nama tabel data. |
|
index_name (wajib) |
|
Nama indeks pencarian. |
|
search_query (wajib) |
|
Kondisi kueri dan konfigurasi kueri umum. |
|
columns_to_get (opsional) |
|
Konfigurasi kolom yang dikembalikan. Jika parameter ini tidak ditentukan, hanya kolom kunci primer yang dikembalikan. |
|
routing_keys (opsional) |
|
Nilai kunci primer dari bidang routing kustom. Parameter ini tidak diperlukan jika routing kustom tidak dikonfigurasi. |
|
timeout_s (opsional) |
|
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) |
|
Untuk bidang Object, tentukan kueri yang sesuai dengan tipe bidang turunan. Untuk bidang Nested, tentukan |
|
sort (opsional) |
|
Urutan pengurutan hasil. Untuk informasi selengkapnya, lihat Urutkan dan laman hasil. |
|
get_total_count (opsional) |
|
Menentukan apakah jumlah total baris yang cocok dikembalikan. Nilai default: |
|
next_token (opsional) |
|
Token paginasi. Teruskan |
|
offset (opsional) |
|
Offset tempat kueri dimulai. Gunakan parameter ini untuk paginasi dangkal. |
|
limit (opsional) |
|
Jumlah maksimum baris yang dikembalikan. Jika parameter ini diatur ke |
|
aggs (opsional) |
|
Konfigurasi agregasi metrik. Untuk informasi selengkapnya, lihat Agregasi. |
|
group_bys (opsional) |
|
Konfigurasi pengelompokan. Untuk informasi selengkapnya, lihat Agregasi. |
|
collapse_field (opsional) |
|
Konfigurasi collapse hasil. Untuk informasi selengkapnya, lihat Collapse hasil kueri. |
|
highlight (opsional) |
|
Konfigurasi ringkasan dan penyorotan untuk bidang |
Kolom yang dikembalikan
columns_to_get bertipe ColumnsToGet dan mencakup parameter berikut.
|
Nama |
Tipe |
Deskripsi |
|
column_names (opsional) |
|
Nama kolom atribut yang dikembalikan. Tentukan parameter ini hanya ketika |
|
return_type (opsional) |
|
Mode kolom yang dikembalikan. |
Respons
Metode search mengembalikan SearchResponse. Tabel berikut menjelaskan bidang intinya.
|
Bidang |
Tipe |
Deskripsi |
|
rows |
|
Baris-baris yang dikembalikan oleh kueri. Jumlahnya tidak melebihi |
|
next_token |
|
Token untuk halaman berikutnya. Nilai kosong menunjukkan tidak ada data tambahan yang tersedia. |
|
total_count |
|
Jumlah baris yang cocok. Nilainya bergantung pada |
|
is_all_succeed |
|
Menunjukkan apakah semua partisi indeks telah dikueri. Jika nilainya |
|
agg_results |
|
Hasil agregasi metrik. Bidang ini kosong jika |
|
group_by_results |
|
Hasil pengelompokan. Bidang ini kosong jika |
|
search_hits |
|
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()