すべてのプロダクト
Search
ドキュメントセンター

Tablestore:クエリ結果の折りたたみ

最終更新日:Aug 07, 2026

Tablestore SDK for Python を使用して、指定したフィールドに基づいて多次元インデックスの結果を折りたたみ、一意のフィールド値ごとに 1 行を返します。

前提条件

Tablestore SDK for Python をインストールし、クライアントを初期化してください。

説明

折りたたみは、指定された多次元インデックスのフィールドによって一致する行をグループ化し、一意のフィールド値ごとに代表的な行を 1 行返します。クエリのソート順によって、各グループからどの行が返されるかが決まります。詳細については、「結果のソートとページネーション」をご参照ください。折りたたみはクエリ結果のみを変更し、テーブルは変更しません。

重要

折りたたみフィールドは、ソートと集約が有効化された非配列の KeywordLong、または Double フィールドである必要があります。折りたたみクエリは、limitoffset を使用したページネーションのみをサポートし、next_token はサポートしていません。limit + offset の合計は 100000 を超えることはできません。集約、グループ化、および一致する行の総数は、折りたたみ前の結果に基づきます。レスポンスでは、折りたたまれたグループの総数は提供されません。

次の例では、category によって結果を折りたたみ、price の降順でソートします。したがって、各カテゴリで最も価格の高い行が返されます。

query = MatchAllQuery()
search_query = SearchQuery(
    query,
    sort=Sort([FieldSort("price", SortOrder.DESC)]),
    collapse_field=Collapse("category"),
    limit=10,
    get_total_count=True,
)
response = client.search(
    "example_table",
    "example_index",
    search_query,
    ColumnsToGet(
        ["category", "price"],
        ColumnReturnType.SPECIFIED,
    ),
)
print(response.total_count)
print(response.rows)

パラメーター

検索リクエスト

search メソッドには、次のパラメーターが含まれています。

名前

説明

table_name (必須)

str

データテーブルの名前。

index_name (必須)

str

多次元インデックスの名前。

search_query (必須)

SearchQuery

クエリ条件と共通のクエリ設定。

columns_to_get (任意)

ColumnsToGet

返す列の設定。このパラメーターが指定されていない場合、プライマリキー列のみが返されます。

routing_keys (任意)

list

カスタムルーティングフィールドのプライマリキー値。カスタムルーティングが設定されていない場合、このパラメーターは不要です。

timeout_s (任意)

int

リクエストのタイムアウト (秒単位) 。このパラメーターが指定されていない場合、クライアントレベルのタイムアウトが使用されます。

クエリ設定

search_querySearchQuery 型で、次のパラメーターが含まれています。

名前

説明

query (必須)

Query

クエリ条件。一致要件に基づいて Query 型を指定します。

sort (任意)

Sort

結果のソート順。詳細については、「結果のソートとページネーション」をご参照ください。

get_total_count (任意)

bool

一致する行の総数を返すかどうかを指定します。デフォルト値: False。このパラメーターを True に設定すると、クエリのオーバーヘッドが増加します。

next_token (任意)

bytes

折りたたみクエリでは、このパラメーターを指定しないでください。

offset (任意)

int

グループの開始位置。デフォルト値: 0。このパラメーターと limit の合計は 100000 を超えることはできません。

limit (任意)

int

返す行の最大数。このパラメーターを 0 に設定した場合、行は返されません。

aggs (任意)

list[Agg]

メトリック集約の設定。詳細については、「集約」をご参照ください。

group_bys (任意)

list[BaseGroupBy]

グループ化の設定。詳細については、「集約」をご参照ください。

collapse_field (必須)

Collapse

結果の折りたたみ設定。

highlight (任意)

Highlight

Text フィールドの概要とハイライト表示の設定。詳細については、「概要とハイライト表示」をご参照ください。

折りたたみ設定

search_query.collapse_fieldCollapse 型で、次のパラメーターが含まれています。

名前

説明

field_name (必須)

str

折りたたみフィールドの名前。この非配列の KeywordLong、または Double フィールドでは、ソートと集約を有効にする必要があります。

返却列

columns_to_getColumnsToGet 型で、次のパラメーターが含まれています。

名前

説明

column_names (任意)

list[str]

返す属性列の名前。このパラメーターは、return_typeSPECIFIED の場合にのみ指定します。

return_type (任意)

ColumnReturnType

返す列のモード。NONE (デフォルト) はプライマリキー列のみを返します。SPECIFIED は指定された属性列を返します。ALL はテーブル内のすべての属性列を返します。ALL_FROM_INDEX はインデックス内のすべての格納されたフィールドを返します。

レスポンス

search メソッドは SearchResponse を返します。次の表では、主要なフィールドについて説明します。

フィールド

説明

rows

list[Row]

折りたたみ後の行。一意の折りたたみフィールド値ごとに最大 1 行が返されます。

next_token

bytes

次のページのトークン。空の値は、利用可能なデータがこれ以上ないことを示します。

total_count

int

折りたたみ前に一致した行の数。値は get_total_count に依存し、折りたたまれたグループの数ではありません。

is_all_succeed

bool

すべてのインデックスパーティションがクエリされたかどうかを示します。値が False の場合、部分的な結果が返されます。

agg_results

list[AggResult]

メトリック集約の結果。このフィールドは、aggs が設定されていない場合は空です。

group_by_results

list[GroupByResult]

グループ化の結果。このフィールドは、group_bys が設定されていない場合は空です。

search_hits

list[SearchHit]

行、関連性スコア、ハイライト表示などの拡張情報を含む検索ヒット。

タプル互換のレスポンス

Tablestore SDK for Python 5.2.0 以降、検索 API はタプルの代わりにレスポンスオブジェクトを返します。バージョン 5.1.0 以前はタプルを直接返します。バージョン 5.2.1 以降では、SearchResponse.v1_response() を呼び出して、以前のバージョンと互換性のあるタプルを取得できます。新しいコードでは、レスポンスフィールドが拡張された場合のアンパックエラーを避けるために、SearchResponse 属性に直接アクセスしてください。

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