Tüm Ürünler
Search
Belge Merkezi

Tablestore:Nested query

Son Güncelleme:Oct 02, 2026

Alt satır sınırlarını koruyarak ve isteğe bağlı olarak eşleşen alt satırları döndürerek Nested alanındaki verileri eşleştirmek için Python için Tablestore SDK'yı kullanın.

Ön koşullar

Python için Tablestore SDK öğesini yükleyin ve bir istemci başlatın.

Açıklama

İç içe sorgu, Nested alanındaki alt satırları sorgular. Her alt satır, kendi alanları arasındaki ilişkileri korur. Bir alt alana doğrudan sorgu uygulayamazsınız; alt sorguyu NestedQuery ile sarmalamanız gerekir. path parametresi Nested alanının yolunu belirtir ve alt sorgudaki alanlar tam yollar kullanmalıdır. Alt sorgu herhangi bir Query türü olabilir. Aynı alt satırın birden çok koşulu karşılaması gerekiyorsa, koşulları tek bir NestedQuery içindeki alt sorgu olarak içeren bir BoolQuery kullanın. Farklı alt satırlar farklı koşulları karşılayabiliyorsa, her koşul için birer NestedQuery oluşturun ve bunları dış bir BoolQuery ile birleştirin.

NestedQuery(path, query, score_mode=ScoreMode.NONE, inner_hits=None, weight=None)

Aşağıdaki örnek, items Nested alanının aynı alt satırında items.name değerinin alice olduğu ve items.age değerinin 40'tan küçük olduğu satırları sorgular.

child_query = BoolQuery(
    must_queries=[
        TermQuery("items.name", "alice"),
        RangeQuery("items.age", range_to=40),
    ]
)
query = NestedQuery("items", child_query)
search_query = SearchQuery(
    query,
    limit=10,
    get_total_count=True,
)
response = client.search(
    "example_table",
    "example_index",
    search_query,
    ColumnsToGet(return_type=ColumnReturnType.ALL),
)
print(response.total_count)
for row in response.rows:
    print(row)

Parametreler

Arama isteği

search yöntemi aşağıdaki parametreleri içerir.


Ad


Tür


Açıklama


table_name (gerekli)


str


Veri tablosunun adı.


index_name (gerekli)


str


Arama dizininin adı.


search_query (gerekli)


SearchQuery


Sorgu koşulu ve genel sorgu yapılandırmaları.


columns_to_get (isteğe bağlı)


ColumnsToGet


Döndürülecek sütun yapılandırması. Bu parametre belirtilmezse yalnızca birincil anahtar sütunları döndürülür.


routing_keys (isteğe bağlı)


list


Özel yönlendirme alanları için birincil anahtar değerlerinin listesi. Özel yönlendirme yapılandırılmadıysa bu parametreyi belirtmeniz gerekmez.


timeout_s (isteğe bağlı)


int


Saniye cinsinden istek zaman aşımı. Bu parametre belirtilmezse istemci düzeyindeki zaman aşımı kullanılır.

Sorgu yapılandırması

search_query, SearchQuery türündedir ve aşağıdaki parametreleri içerir.


Ad


Tür


Açıklama


query (gerekli)


Query


Sorgu koşulu. Bu parametreyi NestedQuery olarak ayarlayın.


sort (isteğe bağlı)


Sort


Sorgu sonuçlarının sıralama düzeni. Daha fazla bilgi için bkz. Sonuçları sıralama ve sayfalara bölme.


get_total_count (isteğe bağlı)


bool


Eşleşen satırların toplam sayısının döndürülüp döndürülmeyeceğini belirtir. Varsayılan değer: False. Bu parametrenin True olarak ayarlanması sorgu ek yükünü artırır.


next_token (isteğe bağlı)


bytes


Sayfalama belirteci. Sonraki sayfayı almak için bu parametreyi önceki yanıttaki next_token değerine ayarlayın. Daha fazla bilgi için bkz. Sonuçları sıralama ve sayfalara bölme.


offset (isteğe bağlı)


int


Geçerli sorgunun başlayacağı ofset. Bu parametreyi yüzeysel sayfalama için kullanın.


limit (isteğe bağlı)


int


Döndürülecek maksimum satır sayısı. Bu parametre 0 olarak ayarlanırsa hiçbir satır verisi döndürülmez.


aggs (isteğe bağlı)


list[Agg]


Toplama yapılandırmaları. Daha fazla bilgi için bkz. Toplama.


group_bys (isteğe bağlı)


list[BaseGroupBy]


Gruplama yapılandırmaları. Daha fazla bilgi için bkz. Toplama.


collapse_field (isteğe bağlı)


Collapse


Belirtilen bir alana göre yinelenen sonuçları kaldıran sonuç daraltma yapılandırması. Daha fazla bilgi için bkz. Sorgu sonuçlarını daraltma.

Sorgu koşulu

search_query.query, NestedQuery türündedir ve aşağıdaki parametreleri içerir.


Ad


Tür


Açıklama


path (gerekli)


str


Nested alanının yolu. Çok düzeyli bir Nested alanı için items.details gibi tam yolu belirtin.


query (gerekli)


Query


path konumundaki alt satırlarda çalıştırılacak sorgu koşulu. Herhangi bir Query türü kullanabilirsiniz. Alt alanlar items.name gibi tam yollar kullanmalıdır.


score_mode (isteğe bağlı)


ScoreMode


Birden çok alt satır eşleştiğinde üst satır puanının hesaplanma yöntemi. NONE (varsayılan) alaka puanlarını hesaplamaz. AVG, MAX, MIN ve TOTAL alt satır puanlarının ortalamasını, maksimumunu, minimumunu ve toplamını kullanır.


inner_hits (isteğe bağlı)


InnerHits


Eşleşen alt satırlar için dönüş, sıralama, sayfalama ve vurgulama yapılandırmaları. Bu parametre belirtilmezse eşleşen alt satır ayrıntıları döndürülmez.


weight (isteğe bağlı)


float


Sorgu koşulunun alaka ağırlığı. Değer pozitif bir kayan nokta sayısı olmalıdır. Varsayılan değer: 1.0.

Eşleşen alt satırlar

search_query.query.inner_hits, InnerHits türündedir ve aşağıdaki parametreleri içerir.


Ad


Tür


Açıklama


sort (gerekli)


Sort


Eşleşen alt satırların sıralama düzeni. Sıralama gerekmiyorsa bu parametreyi None olarak ayarlayın.


offset (gerekli)


int


Eşleşen alt satırların döndürüleceği ofset. Bir değer belirtmek istemiyorsanız None iletin.


limit (gerekli)


int


Döndürülecek eşleşen alt satır sayısı. None iletirseniz sunucu varsayılan olarak üç alt satır döndürür.


highlight (gerekli)


Highlight


Alt alanlar için özet ve vurgulama yapılandırması. Vurgulama gerekmiyorsa bu parametreyi None olarak ayarlayın. Daha fazla bilgi için bkz. Özet ve vurgulama.

Döndürülen sütunlar

columns_to_get, ColumnsToGet türündedir ve aşağıdaki parametreleri içerir.


Ad


Tür


Açıklama


column_names (isteğe bağlı)


list[str]


Döndürülecek nitelik sütunlarının adları. Bu parametreyi yalnızca return_type değeri SPECIFIED olduğunda belirtin.


return_type (isteğe bağlı)


ColumnReturnType


Döndürülen sütun modu. NONE (varsayılan) yalnızca birincil anahtar sütunlarını döndürür; SPECIFIED column_names içindeki nitelik sütunlarını döndürür; ALL tablodaki tüm nitelik sütunlarını döndürür ve ALL_FROM_INDEX dizine alınmış tüm nitelik sütunlarını döndürür.

Yanıt

search yöntemi SearchResponse döndürür. Aşağıdaki tabloda temel alanlar açıklanmaktadır.


Alan


Tür


Açıklama


rows


list[Row]


Geçerli sorgu tarafından döndürülen satırlar. Satır sayısı limit değerini aşmaz.


next_token


bytes


Sonraki sayfa için belirteç. Bu alan boş değilse okumaya devam etmek için bir sonraki isteğe iletin.


total_count


int


Eşleşen satır sayısı. Değer, get_total_count yapılandırmasına bağlıdır.


is_all_succeed


bool


Tüm dizin bölümlerinin sorgulanıp sorgulanmadığını gösterir. Değer False ise kısmi sonuçlar döndürülür ve total_count gerçek eşleşen satır sayısından az olabilir.


agg_results


list[AggResult]


Toplama sonuçları. aggs yapılandırılmamışsa bu alan boştur.


group_by_results


list[GroupByResult]


Gruplama sonuçları. group_bys yapılandırılmamışsa bu alan boştur.


search_hits


list[SearchHit]


Alaka puanları, vurgulamalar ve eşleşen alt satırlar gibi genişletilmiş bilgileri içeren arama isabetleri.

Tuple uyumlu yanıt

Python için Tablestore SDK 5.2.0 sürümünden itibaren arama API'leri tuple yerine yanıt nesneleri döndürür. 5.1.0 ve önceki sürümler doğrudan tuple döndürür. 5.2.1 ve sonraki sürümlerde, önceki sürümlerle uyumlu bir tuple elde etmek için SearchResponse.v1_response() yöntemini çağırabilirsiniz. Yeni kodlarda, yanıt alanları genişletildiğinde paket açma hatalarını önlemek için SearchResponse özniteliklerine doğrudan erişin.

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

Örnekler

Eşleşen alt satırları ve vurgulamaları döndürme

Aşağıdaki örnek, items.name değerinin alice olduğu iç içe geçmiş alt satırları sorgular ve eşleşen alt satırlarla vurgulanan parçaları döndürür. Vurgulama sonuçları search_hits[].search_inner_hits[].search_hits[].highlight_result konumunda kullanılabilir.

highlight = Highlight([HighlightParameter("items.name")])
inner_hits = InnerHits(
    sort=None,
    offset=0,
    limit=10,
    highlight=highlight,
)
query = NestedQuery(
    "items",
    TermQuery("items.name", "alice"),
    inner_hits=inner_hits,
)
response = client.search(
    "example_table",
    "example_index",
    SearchQuery(query, limit=10),
)
for search_hit in response.search_hits:
    for inner_hit in search_hit.search_inner_hits:
        for child_hit in inner_hit.search_hits:
            print(child_hit.row)
            print(child_hit.highlight_result.highlight_fields)