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

Tablestore:exists クエリ

最終更新日:Aug 07, 2026

Tablestore SDK for Python を使用して、指定したインデックス化されたフィールドが存在するかどうかに基づいてデータをフィルタリングします。

前提条件

Tablestore SDK for Python をインストールし、クライアントを初期化します。

説明

NULL クエリとも呼ばれる Exists クエリは、指定されたインデックス付きフィールドが存在する行に一致します。フィールドは、対応する列がテーブルに書き込まれなかった場合に存在しないと見なされます。空の配列も、存在しないフィールドとして扱われます。Nested フィールドまたはその子フィールドのいずれかをクエリするには、ExistsQuery を NestedQuery でラップします。フィールドが存在しない行に一致させるには、ExistsQuery を BoolQuery.must_not_queries に追加します。search メソッドを呼び出すときは、クエリタイプを ExistsQuery に設定します。

ExistsQuery(field_name)

次の例では、city フィールドが存在する行をクエリし、最大 10 行と一致する行の総数を返します。

query = ExistsQuery("city")
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)

パラメータ

検索リクエスト

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

名前

型

説明

table_name (必須)

文字列

データテーブルの名前。

index_name (必須)

文字列

検索インデックスの名前。

search_query (必須)

SearchQuery

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

columns_to_get (任意)

ColumnsToGet

取得するカラムの設定。このパラメータを指定しない場合、プライマリキーカラムのみが返されます。

routing_keys (任意)

list

カスタムルーティングフィールドのプライマリキー値のリスト。カスタムルーティングが設定されていない場合、このパラメータを指定する必要はありません。

timeout_s (任意)

int

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

クエリ設定

search_query は SearchQuery 型で、以下のパラメーターを含みます。

名前

型

説明

query (必須)

クエリ

クエリ条件。このパラメーターを ExistsQuery に設定します。

sort (任意)

ソート

クエリ結果のソート順序。詳細については、「結果のソートとページ分割」をご参照ください。

get_total_count (任意)

bool

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

next_token (任意)

バイト

ページネーショントークンです。 次のページを取得するには、このパラメーターに前回のレスポンスの next_token を設定します。 詳細については、「結果のソートとページ分割」をご参照ください。

offset (任意)

int

現在のクエリの開始位置のオフセット。浅いページ分割にこのパラメータを使用します。

limit (任意)

int

返す最大行数。このパラメーターが 0 に設定されている場合、行データは返されません。

aggs (任意)

list[Agg]

集計設定。詳細については、「集計」をご参照ください。

group_bys (任意)

list[BaseGroupBy]

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

collapse_field (任意)

折りたたむ

結果の折りたたみ設定。指定したフィールドに基づいて重複した結果を削除します。詳細については、「クエリ結果の折りたたみ」をご参照ください。

クエリ条件

search_query.query は ExistsQuery 型であり、次のパラメーターを含みます。

名前

型

説明

field_name (必須)

文字列

クエリ対象のインデックス化されたフィールドの名前。

取得カラム

columns_to_get は ColumnsToGet 型で、次のパラメーターを含みます。

名前

型

説明

column_names (任意)

list[str]

返す属性列の名前です。return_type が SPECIFIED の場合にのみ、このパラメーターを指定します。

return_type (任意)

ColumnReturnType

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

レスポンス

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

フィールド

型

説明

rows

list[Row]

現在のクエリで返される行。行数は limit を超えません。

next_token

バイト

次のページのトークン。このフィールドが空でない場合は、次のリクエストに渡して読み取りを続行します。

total_count

int

The number of matching rows. The value depends on the get_total_count configuration.

is_all_succeed

bool

すべてのインデックスパーティションがクエリされたかどうかを示します。値が False の場合、部分的な結果が返され、total_count は実際の一致する行数より少なくなる可能性があります。

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()