All Products
Search
Document Center

Tablestore:Boolean query

Last Updated:Aug 07, 2026

Gunakan Tablestore SDK for Python untuk menggabungkan beberapa kondisi kueri menggunakan logika AND, OR, dan NOT.

Prasyarat

Instal Tablestore SDK for Python dan inisialisasi klien.

Deskripsi

Boolean query menggunakan BoolQuery untuk menggabungkan beberapa kueri anak menjadi satu kondisi kompleks. Kueri anak dapat berupa jenis kueri apa pun atau BoolQuery lainnya. must_queries dan filter_queries merepresentasikan operasi AND, should_queries merepresentasikan OR, sedangkan must_not_queries merepresentasikan NOT. Perlu diperhatikan bahwa filter_queries dan must_not_queries tidak berkontribusi terhadap skor relevansi.

Jika minimum_should_match tidak ditentukan, should_queries bersifat opsional selama must_queries atau filter_queries ada pada tingkat yang sama. Dalam kasus lain yang melibatkan should_queries, secara default minimal satu kueri anak dari should_queries harus cocok.

BoolQuery(
    must_queries=None,
    must_not_queries=None,
    filter_queries=None,
    should_queries=None,
    minimum_should_match=None,
    weight=None,
)

Contoh berikut mengkueri baris di mana city bernilai hangzhou dan category bernilai book.

query = BoolQuery(
    must_queries=[
        TermQuery("city", "hangzhou"),
        TermQuery("category", "book"),
    ]
)
response = client.search(
    "example_table",
    "example_index",
    SearchQuery(query, limit=10, get_total_count=True),
    ColumnsToGet(return_type=ColumnReturnType.ALL),
)
print(response.rows)

Parameter

Permintaan pencarian

Metode search mencakup parameter berikut.

Name

Type

Description

table_name (required)

str

Nama tabel data.

index_name (required)

str

Nama indeks pencarian.

search_query (required)

SearchQuery

Kondisi kueri dan konfigurasi kueri umum.

columns_to_get (optional)

ColumnsToGet

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

routing_keys (optional)

list

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

timeout_s (optional)

int

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

Konfigurasi kueri

search_query bertipe SearchQuery dan mencakup parameter berikut.

Name

Type

Description

query (required)

Query

Kondisi kueri. Atur parameter ini ke BoolQuery.

sort (optional)

Sort

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

get_total_count (optional)

bool

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

next_token (optional)

bytes

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

offset (optional)

int

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

limit (optional)

int

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

aggs (optional)

list[Agg]

Konfigurasi agregasi metrik. Untuk informasi selengkapnya, lihat Aggregation.

group_bys (optional)

list[BaseGroupBy]

Konfigurasi pengelompokan. Untuk informasi selengkapnya, lihat Aggregation.

collapse_field (optional)

Collapse

Konfigurasi collapse hasil. Untuk informasi selengkapnya, lihat Collapse query results.

highlight (optional)

Highlight

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

Kondisi Boolean query

search_query.query bertipe BoolQuery dan mencakup parameter berikut.

Name

Type

Description

must_queries (optional)

list[Query]

Kueri anak yang semuanya harus sesuai. Kueri anak yang sesuai berkontribusi terhadap skor relevansi.

filter_queries (optional)

list[Query]

Kueri anak yang semuanya harus sesuai tetapi tidak berkontribusi terhadap skor relevansi.

should_queries (optional)

list[Query]

Kueri anak yang jumlah minimum tertentu harus sesuai. Semakin banyak kondisi yang sesuai, semakin tinggi skor relevansinya.

must_not_queries (optional)

list[Query]

Kueri anak yang tidak boleh sesuai. Kueri ini tidak berkontribusi terhadap skor relevansi.

minimum_should_match (optional)

int

Jumlah minimum kueri anak should_queries yang harus sesuai.

weight (optional)

float

Bobot kueri, yang harus berupa bilangan titik mengambang positif. Nilai default: 1.0. Parameter ini memengaruhi skor relevansi tetapi tidak memengaruhi kecocokan.

Kolom yang dikembalikan

columns_to_get bertipe ColumnsToGet dan mencakup parameter berikut.

Name

Type

Description

column_names (optional)

list[str]

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

return_type (optional)

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.

Field

Type

Description

rows

list[Row]

Baris yang dikembalikan oleh kueri. Jumlahnya tidak melebihi limit.

next_token

bytes

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

total_count

int

Jumlah baris yang sesuai. 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 versi 5.2.0, Tablestore SDK for Python mengembalikan objek respons alih-alih tupel untuk API pencarian. Pada versi 5.1.0 dan sebelumnya, API langsung mengembalikan tupel. Mulai 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 jumlah bidang respons diperluas.

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

Contoh

Menggabungkan kondisi OR, NOT, dan filter

Contoh berikut mensyaratkan bahwa baris harus termasuk dalam kategori book-, memenuhi minimal salah satu kategori Python atau Java, serta tidak memiliki status deprecated.

query = BoolQuery(
    filter_queries=[PrefixQuery("category", "book-")],
    should_queries=[
        TermQuery("category", "book-python"),
        TermQuery("category", "book-java"),
    ],
    must_not_queries=[TermQuery("status", "deprecated")],
    minimum_should_match=1,
)
response = client.search(
    "example_table",
    "example_index",
    SearchQuery(query, limit=10),
)
print(response.rows)