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

Tablestore:ワイルドカードクエリ

最終更新日:Aug 07, 2026

Tablestore SDK for Python を使用して、*? を含むパターンを作成し、Keyword または Text 型のフィールドのデータを照合します。

前提条件

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

概要

ワイルドカードクエリは、ワイルドカード文字を含むパターンを使用して、インデックス化されたフィールドと照合します。照合動作は、SQL の LIKE に似ています。* 文字は 0 個以上の文字に一致し、? 文字は任意の 1 文字に一致します。Keyword 型のフィールドの場合、パターンはフィールド値全体と照合されます。Text 型のフィールドの場合、パターンは個々のトークンと照合され、パターン自体はトークン化されません。パターンには最大 32 文字を含めることができ、ワイルドカードで始めることもできます。照合では、大文字と小文字が区別されます。SQL の NOT LIKE に似た動作を実装するには、WildcardQueryBoolQuery.must_not_queries に追加します。search メソッドを呼び出す際に、クエリタイプを WildcardQuery に設定します。フィールドタイプの詳細については、「文字列型」をご参照ください。

WildcardQuery(field_name, value, weight=None)

次の例では、category フィールドが book-* パターンに一致する行をクエリして、最大 10 行のデータと一致する行の総数を返します。

query = WildcardQuery("category", "book-*")
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 (必須)

str

データテーブルの名前。

index_name (必須)

str

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

search_query (必須)

SearchQuery

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

columns_to_get (任意)

ColumnsToGet

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

routing_keys (任意)

list

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

timeout_s (任意)

int

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

クエリ設定

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

名前

説明

query (必須)

Query

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

sort (任意)

Sort

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

get_total_count (任意)

bool

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

next_token (任意)

bytes

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

offset (任意)

int

現在のクエリを開始するオフセット。このパラメーターは、シャローページネーションに使用します。

limit (任意)

int

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

aggs (任意)

list[Agg]

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

group_bys (任意)

list[BaseGroupBy]

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

collapse_field (任意)

Collapse

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

highlight (任意)

Highlight

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

クエリ条件

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

名前

説明

field_name (必須)

str

クエリ対象の Keyword または Text 型のフィールドの名前。

value (必須)

str

クエリパターン。最大 32 文字まで含めることができます。* 文字は 0 個以上の文字に一致し、? 文字は任意の 1 文字に一致します。照合では、大文字と小文字が区別されます。

weight (任意)

float

クエリ条件の関連度の重み。値は正の浮動小数点数を指定します。このパラメーターは、照合や返される行数には影響しません。結果が関連度スコアでソートされる場合にのみ、順序に影響します。デフォルト値は 1.0 です。

返される列

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

名前

説明

column_names (任意)

list[str]

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

return_type (任意)

ColumnReturnType

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

レスポンス

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

フィールド

説明

rows

list[Row]

現在のクエリによって返された行。行数は limit を超えません。

next_token

bytes

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

total_count

int

一致する行数。値は get_total_count の設定によって異なります。

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