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

Tablestore:プレフィックスクエリ

最終更新日:May 01, 2026

プレフィックスクエリを実行すると、指定されたプレフィックスに一致するデータをクエリできます。プレフィックス条件に使用される列が TEXT 列の場合、その列はトークン化されます。少なくとも 1 つのトークンが指定されたプレフィックスを含む場合、その行はクエリ条件を満たします。

前提条件

パラメーター

パラメーター

説明

field_name

クエリ対象の列名です。

prefix

一致させるプレフィックスです。

列が TEXT 列の場合、まず列がトークン化されます。少なくとも 1 つのトークンが指定されたプレフィックスを含む場合、その行は一致とみなされます。

query

クエリタイプです。PrefixQuery を指定します。

table_name

データテーブルの名前です。

index_name

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

limit

1 回のクエリで返される最大行数です。

データを取得せずに一致する行数をカウントするには、このパラメーターを 0 に設定します。

get_total_count

クエリ条件に一致する行の総数を返すかどうかを指定します。デフォルト値は false です。

このパラメーターを true に設定すると、クエリパフォーマンスが低下します。

columns_to_get

一致する各行に対して返す列を制御します。return_type および column_names フィールドを使用してこのパラメーターを設定します。

  • ColumnReturnType.SPECIFIEDcolumn_names にリストされた列のみを返します。

  • ColumnReturnType.ALL: すべての列を返します。

  • ColumnReturnType.NONE: プライマリキー列のみを返します。

使用例

以下の例では、Col_Keyword 列の値が tablestore で始まる行をクエリする方法を示します。

  • Tablestore SDK for Python V5.2.1 以降を使用したプレフィックスクエリの実行

    Tablestore SDK for Python V5.2.1 以降では、デフォルトで SearchResponse オブジェクトが返されます。以下のコードはリクエストのサンプルです。

    query = PrefixQuery('Col_Keyword', 'tablestore')
    search_response = client.search(
        '<TABLE_NAME>', '<SEARCH_INDEX_NAME>',  
        SearchQuery(query, limit=100, get_total_count=True), 
        ColumnsToGet(return_type=ColumnReturnType.ALL)
    )
    print('request_id : %s' % search_response.request_id)
    print('is_all_succeed : %s' % search_response.is_all_succeed)
    print('total_count : %s' % search_response.total_count)
    print('rows : %s' % search_response.rows)
    
    # # 深いページングが必要な場合は、next_token を使用してページング深度の制限を回避します。
    # all_rows = []
    # next_token = None
    # # 最初のラウンド
    # search_response = client.search(
    #     '<TABLE_NAME>', '<SEARCH_INDEX_NAME>',
    #     SearchQuery(query, next_token=next_token, limit=100, get_total_count=True),
    #     columns_to_get=ColumnsToGet(return_type=ColumnReturnType.ALL))
    # all_rows.extend(search_response.rows)
    # 
    # # ループ
    # while search_response.next_token:
    #     search_response = client.search(
    #         '<TABLE_NAME>', '<SEARCH_INDEX_NAME>',
    #         SearchQuery(query, next_token=search_response.next_token, limit=100, get_total_count=True),
    #         columns_to_get=ColumnsToGet(return_type=ColumnReturnType.ALL))
    #     all_rows.extend(search_response.rows)
    # print('Total rows:%s' % len(all_rows))

    結果をタプル形式で返すには、結果に対して .v1_response() を呼び出します。

    query = PrefixQuery('Col_Keyword', 'tablestore')
    rows, next_token, total_count, is_all_succeed, agg_results, group_by_results = client.search(
        '<TABLE_NAME>', '<SEARCH_INDEX_NAME>',
        SearchQuery(query, limit=100, get_total_count=True), 
        ColumnsToGet(return_type=ColumnReturnType.ALL)
    ).v1_response()
  • Tablestore SDK for Python V5.2.1 より前のバージョンを使用したプレフィックスクエリの実行

    Tablestore SDK for Python V5.2.1 より前のバージョンでは、デフォルトで結果がタプル形式で返されます。以下のコードはリクエストのサンプルです。

    query = PrefixQuery('Col_Keyword', 'tablestore')
    rows, next_token, total_count, is_all_succeed = client.search(
       '<TABLE_NAME>', '<SEARCH_INDEX_NAME>',
        SearchQuery(query, limit=100, get_total_count=True), 
        ColumnsToGet(return_type=ColumnReturnType.ALL)
    )

よくある質問

参考資料

  • 多次元インデックスを使用してデータをクエリする際は、以下のクエリ方法を使用できます:完全一致検索複数値完全一致検索完全一致検索一致検索フレーズ一致検索プレフィックスクエリ範囲クエリワイルドカード検索ジオクエリブール値クエリKNN ベクタークエリネストされたクエリ、およびexists クエリ。ビジネス要件に応じて、多次元インデックスが提供するこれらのクエリ方法を使用して、複数のディメンションからデータをクエリできます。

    ソートおよびページング機能を使用して、クエリ条件を満たす行をソートまたはページングできます。詳細については、「ソートとページング」をご参照ください。

    折りたたみ (distinct) 機能を使用して、特定の列に基づいて結果セットを折りたたむことができます。これにより、指定されたタイプのデータがクエリ結果に 1 回だけ表示されます。詳細については、「折りたたみ (distinct)」をご参照ください。

  • データテーブル内のデータを分析したい場合は、Search 操作の集約機能を使用するか、SQL ステートメントを実行できます。たとえば、最小値、最大値、合計値、行数の合計を取得できます。詳細については、「集約」および「SQL クエリ」をご参照ください。

  • 行をソートする必要がなく、クエリ条件を満たすすべての行を取得したい場合は、ParallelScan 操作および ComputeSplits 操作を呼び出して並列スキャン機能を使用できます。詳細については、「並列スキャン」をご参照ください。