Tüm Ürünler
Search
Belge Merkezi

Tablestore:Sort and paginate results

Son Güncelleme:Oct 02, 2026

Tablestore SDK for Python kullanarak arama dizini sonuçlarının sırasını kontrol edebilir ve offset veya next_token ile sonuçları sayfalara bölebilirsiniz.

Ön koşullar

Tablestore SDK for Python paketini yükleyin ve bir istemci başlatın.

Açıklama

Arama dizinleri, dizin ön sıralaması ve sorgu zamanı sıralamayı destekler. Bir arama dizini oluştururken varsayılan sıralamayı belirtmek için index_sort parametresini kullanın. index_sort belirtilmezse satırlar birincil anahtara göre sıralanır. Dizin ön sıralaması yalnızca PrimaryKeySort ve FieldSort türlerini destekler; Nested alan içeren dizinlerde desteklenmez. Oluşturma işleminden sonra şemayı dinamik olarak güncelleyerek dizin ön sıralamasını değiştirebilirsiniz. Sorgu zamanında sıralamayı belirtmek için SearchQuery.sort parametresini kullanın; bu parametreyle ScoreSort, PrimaryKeySort, FieldSort veya GeoDistanceSort belirtebilir ya da birden fazla sıralayıcıyı liste sırasına göre birleştirebilirsiniz. Birincil anahtarlar haricinde, sıralama alanlarının dizin oluşturulurken sıralama ve toplama özelliği etkinleştirilmiş olmalıdır.


Sayfalama yöntemi


Açıklama


limit ve offset


Sonuçlar 100.000 satırı aşmadığında ve belirli bir konuma atlamak gerektiğinde kullanın. limit + offset toplamı 100000 değerini aşamaz.


next_token


Derin sayfalama veya tüm sonuçların ardışık olarak okunması gereken durumlarda kullanın. Sayfalama derinliği 100.000 satır sınırıyla kısıtlanmaz, ancak sayfalar yalnızca ardışık düzende okunabilir.

Aşağıdaki örnek, önce score alanına göre azalan sonra da birincil anahtara göre artan sırada ilk 10 satırı döndürür.

sort = Sort([
    FieldSort("score", SortOrder.DESC),
    PrimaryKeySort(SortOrder.ASC),
])
response = client.search(
    "example_table",
    "example_index",
    SearchQuery(MatchAllQuery(), sort=sort, limit=10),
    ColumnsToGet(return_type=ColumnReturnType.ALL),
)
print(response.rows)

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ının birincil anahtar değerleri. Özel yönlendirme yapılandırılmamışsa bu parametre gerekli değildir.


timeout_s (isteğe bağlı)


int


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

Sorgu yapılandırması

search_query parametresi SearchQuery türündedir ve aşağıdaki sıralama ile sayfalama parametrelerini içerir.


Ad


Tür


Açıklama


query (gerekli)


Query


Sorgu koşulu.


sort (isteğe bağlı)


Sort


Sorgu zamanı sıralama yapılandırması. Belirtilmezse dizin ön sıralaması kullanılır. next_token kullanırken bu parametreyi belirtmeyin.


offset (isteğe bağlı)


int


Ofset değeri. Varsayılan değer: 0. next_token kullanırken bu parametreyi belirtmeyin.


limit (isteğe bağlı)


int


Döndürülecek maksimum satır sayısı. Varsayılan değer: 10. Dönüş sütunlarından herhangi biri tablodan okunuyorsa maksimum değer 100, tüm dönüş sütunları arama dizininden okunuyorsa 1000 olur.


next_token (isteğe bağlı)


bytes


Sayfalama belirteci. İlk istekte bu parametreyi atlayın, sonraki isteklerde önceki yanıttaki next_token değerini kullanın.


get_total_count (isteğe bağlı)


bool


Eşleşen toplam satır sayısının döndürülüp döndürülmeyeceğini belirtir. Varsayılan değer: False.

Sıralama yapılandırması

search_query.sort parametresi Sort türündedir ve aşağıdaki parametreyi içerir.


Ad


Tür


Açıklama


sorters (gerekli)


list[Sorter]


Sıralayıcı listesi. Liste sırası çok düzeyli sıralama önceliğini belirler. Desteklenen sıralayıcı türleri şunlardır: ScoreSort, PrimaryKeySort, FieldSort ve GeoDistanceSort.

Alaka puanına göre sıralama

search_query.sort.sorters[] parametresi ScoreSort türündeyse satırlar alaka puanına göre sıralanır. ScoreSort aşağıdaki parametreyi içerir.


Ad


Tür


Açıklama


sort_order (isteğe bağlı)


SortOrder


Sıralama düzeni. Varsayılan değer: DESC. Alaka puanına göre sıralama yapmak için ScoreSort parametresini açıkça yapılandırın.

Birincil anahtara göre sıralama

search_query.sort.sorters[] parametresi PrimaryKeySort türündeyse satırlar birincil anahtara göre sıralanır. PrimaryKeySort aşağıdaki parametreyi içerir.


Ad


Tür


Açıklama


sort_order (isteğe bağlı)


SortOrder


Sıralama düzeni. Varsayılan değer: ASC.

Alana göre sıralama

search_query.sort.sorters[] parametresi FieldSort türündeyse satırlar alan değerine göre sıralanır. FieldSort aşağıdaki parametreleri içerir.


Ad


Tür


Açıklama


field_name (gerekli)


str


Sıralama alanının adı. Alan için sıralama ve toplama özelliği etkinleştirilmiş olmalıdır.


sort_order (isteğe bağlı)


SortOrder


Sıralama düzeni. Varsayılan değer: ASC.


sort_mode (isteğe bağlı)


SortMode


Çok değerli bir alan için değer seçme modu: MIN, MAX veya AVG.


nested_filter (isteğe bağlı)


NestedFilter


Nested alt alan sıralama yapılandırması; Nested yolunu ve sıralamada kullanılacak alt satırları seçen bir sorguyu içerir.

Nested filtresi

search_query.sort.sorters[].nested_filter parametresi NestedFilter türündedir, FieldSort veya GeoDistanceSort içinde kullanılabilir ve aşağıdaki parametreleri içerir.


Ad


Tür


Açıklama


path (gerekli)


str


Nested alanın yolu.


query_filter (gerekli)


Query


Sıralamada kullanılacak Nested alt satırları seçen sorgu koşulu. Tüm alt satırları kullanmak için bu parametreyi MatchAllQuery olarak ayarlayın.

Coğrafi mesafeye göre sıralama

search_query.sort.sorters[] parametresi GeoDistanceSort türündeyse satırlar coğrafi bir nokta ile hedef noktalar arasındaki mesafeye göre sıralanır. GeoDistanceSort aşağıdaki parametreleri içerir.


Ad


Tür


Açıklama


field_name (gerekli)


str


GeoPoint sıralama alanının adı.


points (gerekli)


list[str]


Hedef noktalar; latitude,longitude biçimindedir.


sort_order (isteğe bağlı)


SortOrder


ASC en yakından en uzağa, DESC ise en uzaktan en yakına doğru sıralama yapar.


sort_mode (isteğe bağlı)


SortMode


Birden fazla mesafe olduğunda değer seçme modu: MIN, MAX veya AVG.


geo_distance_type (isteğe bağlı)


GeoDistanceType


Mesafe hesaplama yöntemi. ARC (varsayılan) küresel modeli, PLANE ise düzlemsel modeli kullanır.


nested_filter (isteğe bağlı)


NestedFilter


Nested alt alan sıralama yapılandırması.

Dönüş sütunları

columns_to_get parametresi 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önüş sütunu modu. NONE (varsayılan) yalnızca birincil anahtar sütunlarını döndürür; SPECIFIED belirtilen nitelik sütunlarını döndürür; ALL tablodaki tüm nitelik sütunlarını döndürür; ALL_FROM_INDEX ise dizindeki tüm depolanan alanları döndürür.

Yanıt

search yöntemi SearchResponse nesnesini döndürür. Aşağıdaki tabloda çekirdek alanlar açıklanmıştır.


Alan


Tür


Açıklama


rows


list[Row]


Sorgu tarafından döndürülen satırlar. Sayı limit değerini aşmaz.


next_token


bytes


Sonraki sayfa için belirteç. Boş değer, başka veri olmadığını gösterir.


total_count


int


Eşleşen satır sayısı. Değer get_total_count parametresine bağlıdır.


is_all_succeed


bool


Tüm dizin bölümlerinin sorgulanıp sorgulanmadığını belirtir. Değer False ise kısmi sonuçlar döndürülür.


agg_results


list[AggResult]


Ölçüm 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]


Arama eşleşmeleri; satırlar, alaka puanları ve vurgulamalar gibi genişletilmiş bilgileri içerir.

Boş bir next_token değeri, sorgunun deterministik bir sıralama düzenine sahip olmadığını da gösterebilir. total_count mevcut sayfadaki satır sayısı değil, eşleşen toplam satır sayısını temsil eder.

Tuple uyumlu yanıt

Tablestore SDK for Python 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 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

Coğrafi mesafeye göre sıralama

Aşağıdaki örnek, location alanı ile 30.25,120.16 koordinatları arasındaki küresel mesafeye göre sonuçları en yakından en uzağa doğru döndürür.

sort = Sort([
    GeoDistanceSort(
        "location",
        ["30.25,120.16"],
        sort_order=SortOrder.ASC,
        sort_mode=SortMode.MIN,
        geo_distance_type=GeoDistanceType.ARC,
    )
])
response = client.search(
    "example_table",
    "example_index",
    SearchQuery(MatchAllQuery(), sort=sort, limit=10),
)
print(response.rows)

next_token kullanarak sayfalama

İlk istekte sıralama düzenini belirtin. Sonraki isteklerde, belirteç boşalana kadar yalnızca önceki yanıttaki next_token değerini ve aynı sorgu koşulunu iletin.

query = MatchAllQuery()
response = client.search(
    "example_table",
    "example_index",
    SearchQuery(query, sort=Sort([PrimaryKeySort()]), limit=100),
)
all_rows = list(response.rows)

while response.next_token:
    response = client.search(
        "example_table",
        "example_index",
        SearchQuery(query, next_token=response.next_token, limit=100),
    )
    all_rows.extend(response.rows)

print(len(all_rows))
Önemli

next_token kullanarak sayfalama yaparken offset parametresini belirtmeyin ve sayfalar doğrudan atlanamaz. Geriye doğru hareket etmek için her sayfa için kullanılan belirteci önbelleğe alın ve hedef sayfanın belirteciyle yeniden sorgulama yapın. Nested alan içeren bir arama dizininde dizin ön sıralaması bulunmaz. İlk istekte sort parametresini açıkça belirtin, aksi takdirde sunucu next_token döndürmez.