全部产品
Search
文档中心

Tablestore:Kueri JSON

更新时间:Dec 07, 2025

Data JSON dapat bertipe Object atau Nested. Untuk mengkueri data bertipe Object, Anda dapat langsung menggunakan tipe kueri yang sesuai. Untuk mengkueri data bertipe Nested, Anda harus membungkus kondisi kueri dalam NestedQuery.

Prasyarat

Batasan

Bidang bertipe Vector tidak dapat digunakan dalam JSON.

Skenario kueri

Misalkan sebuah tabel data berisi kolom id bertipe String dan kolom address bertipe String. Kolom address menyimpan data dalam format JSON.

Misalkan suatu baris memiliki kolom address dengan nilai [{ "country": "China", "city": "hangzhou" }, { "country": "usa", "city": "Seattle" }]. Kueri untuk country="China" dan city="Seattle" tidak akan mengembalikan baris tersebut jika kolom address bertipe Nested. Namun, jika kolom tersebut bertipe Object, kueri tersebut akan mengembalikan baris tersebut.

Contoh

Contoh kueri tipe Nested JSON

Contoh berikut menunjukkan cara mengkueri baris di mana satu elemen nested dari bidang address memenuhi dua kondisi: address.country bernilai 'China' dan address.city bernilai 'Seattle'.

from tablestore import *

def nested_query(client):
    # Kondisi 1: Negara dalam sub-baris address harus "China".
    term_query1 = TermQuery('address.country','China')

    # Kondisi 2: Kota dalam sub-baris address harus "Seattle".
    term_query2 = TermQuery('address.city', 'Seattle')

    # Gunakan BoolQuery dengan kondisi AND untuk mencari sub-baris yang memenuhi kedua kueri.
    bool_query = BoolQuery(
        must_queries=[term_query1, term_query2]
    )

    # Gunakan BoolQuery di dalam NestedQuery agar satu sub-baris memenuhi beberapa kondisi sekaligus.
    nested_query = NestedQuery(
        path="address",  # Jalur ke kolom nested. Ini adalah jalur induk dari bidang yang akan dikueri.
        query=bool_query,  # Kondisi kueri dalam.
        score_mode=ScoreMode.NONE  # Mode penilaian. Diatur ke None.
    )

    # Bangun kueri pencarian.
    search_query = SearchQuery(
        query=nested_query
    )

    # Eksekusi pencarian.
    resp = client.search(table_name='<TABLE_NAME>',index_name='<SEARCH_INDEX_NAME>',
                         search_query=search_query)
    print("Row:", resp.rows)
    

Contoh kueri tipe Object JSON

Contoh berikut menunjukkan cara mengkueri baris yang memenuhi dua kondisi pada kolom address: address.country bernilai 'China' dan address.city bernilai 'Seattle'.

from tablestore import *

def bool_query(client):
    # Kondisi 1: Negara dalam sub-baris address harus "China".
    term_query1 = TermQuery('address.country','China')

    # Kondisi 2: Kota dalam sub-baris address harus "Seattle".
    term_query2 = TermQuery('address.city','Seattle')

    # Gunakan BoolQuery dengan kondisi AND untuk mencari sub-baris yang memenuhi kedua kueri.
    bool_query = BoolQuery(
        must_queries=[term_query1, term_query2]
    )

    # Bangun kueri pencarian.
    search_query = SearchQuery(
        query=bool_query
    )


    # Eksekusi pencarian.
    resp = client.search(table_name='<TABLE_NAME>',index_name='<SEARCH_INDEX_NAME>',
                         search_query=search_query)
    print("Row:", resp.rows)