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

Tablestore:範囲クエリ

最終更新日:Sep 29, 2026

範囲クエリは、指定された範囲に基づいてテーブルからデータを取得します。Text 型のフィールドの場合、フィールド値のいずれかのトークンが範囲条件を満たしていれば、一致と見なされます。

インターフェイス

範囲クエリは、検索操作または パラレルスキャン操作を使用して実行できます。 クエリタイプは RangeQuery です。

パラメーター

パラメーター

説明

fieldName

照合するフィールドの名前です。

from

範囲の開始値です。

範囲条件を設定する場合、より大きい (>) を指定するには greaterThan を、以上 (>=) を指定するには greaterThanOrEqual を使用します。

to

範囲の終了値です。

範囲条件を設定する際は、lessThan で未満 (<) を、lessThanOrEqual で以下 (<=) を指定します。

includeLower

from の値を結果に含めるかどうかを指定します。データ型はブール値です。

includeUpper

to の値を結果に含めるかどうかを指定します。データ型はブール値です。

query

クエリタイプを RangeQuery に設定します。

sort

指定された順序で結果をソートします。詳細については、「ソートとページング」をご参照ください。

getTotalCount

一致した行の総数を返すかどうかを指定します。デフォルト値は false で、その場合は一致した行の総数を返しません。

一致した行の総数を返すと、クエリのパフォーマンスに影響します。

tableName

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

indexName

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

columnsToGet

返す列を指定します。これには、returnAll と columns パラメーターが含まれます。

returnAll のデフォルト値は false です。この場合、すべての列は返されません。columns を使用して、返す特定の列を指定できます。columns で列を指定しない場合は、プライマリキー列のみが返されます。

returnAll を true に設定すると、すべての列が返されます。

使用方法

範囲クエリは、コンソール、コマンドラインインターフェイス、または SDK を使用して実行できます。範囲クエリを実行する前に、次の準備が必要です。

  • Tablestore での操作を実行する権限を持つ Alibaba Cloud アカウントまたは RAM ユーザーが必要です。RAM ユーザーに Tablestore の操作権限を付与する方法については、「RAM ポリシーを使用した RAM ユーザーへの権限付与」をご参照ください。

    Tablestore SDK または Tablestore CLI を使用してクエリを実行する場合、Alibaba Cloud アカウントまたは RAM ユーザー用に AccessKey ペアが作成されている必要があります。詳細については、「AccessKey の作成」をご参照ください。

  • データテーブルが作成されていること。詳細については、「テーブルの操作」をご参照ください。

  • データテーブルの検索インデックスが作成されていること。詳細については、「検索インデックスの作成」をご参照ください。

  • Tablestore SDK を使用してクエリを実行する場合は、OTSClient インスタンスが初期化されていること。詳細については、「Tablestore クライアントの初期化」をご参照ください。

  • Tablestore CLI を使用してクエリを実行する場合は、Tablestore CLI がダウンロードおよび起動され、アクセスするインスタンスとデータテーブルに関する情報が設定されていること。詳細については、「Tablestore CLI のダウンロード」、「Tablestore CLI の起動とアクセス情報の設定」、および「データテーブルの操作」をご参照ください。

コンソールの使用

  1. [インデックス] タブに移動します。

    1. Tablestore コンソールにログインします。

    2. 上部メニューで、リソースグループとリージョンを選択します。

    3. [概要] ページで、管理するインスタンスの名前をクリックするか、インスタンスの [操作] 列にある [インスタンスの管理] をクリックします。

    4. [インスタンス詳細] タブの [テーブル] タブで、データテーブルの名前をクリックするか、データテーブルの [操作] 列にある [インデックス] をクリックします。

  2. [インデックス] タブで、データのクエリに使用する検索インデックスを見つけ、[操作] 列の [データ管理] をクリックします。

  3. [データクエリ] ダイアログボックスで、データをクエリできます。

    1. デフォルトでは、システムはすべての属性列を返します。特定の属性列を返すには、[すべての列] をオフにし、返す属性列を指定します。複数の属性列はコンマ (,) で区切ります。

      説明

      デフォルトでは、システムはデータテーブルのすべてのプライマリキー列を返します。

    2. ビジネス要件に基づいて、[And]、[Or]、または [Not] 論理演算子を選択します。

      [And] 論理演算子を選択した場合、すべてのクエリ条件を満たすデータが返されます。[Or] 演算子を選択し、単一のクエリ条件を指定した場合、クエリ条件を満たすデータが返されます。Or 論理演算子を選択し、複数のクエリ条件を指定した場合、いずれかのクエリ条件を満たすデータが返されます。[Not] 論理演算子を選択した場合、クエリ条件を満たさないデータが返されます。

    3. インデックスフィールドを選択し、[追加] をクリックします。

    4. インデックスフィールドのクエリタイプを [範囲クエリ (RangeQuery)] に設定し、クエリ範囲を指定します。

      クエリ範囲は左閉じ、右開き ([start, end)) です。

    5. デフォルトでは、ソート機能は無効になっています。特定のフィールドに基づいてクエリ結果をソートする場合は、[ソート] をオンにし、クエリ結果のソート基準となるフィールドとソート順序を指定します。

    6. デフォルトでは、集計機能は無効になっています。特定のフィールドの統計を収集する場合は、[統計の収集] をオンにし、統計を収集するフィールドを指定してから、統計の収集に必要な情報を設定します。

  4. [OK] をクリックします。

    クエリ条件を満たすデータが、[インデックス] タブに指定した順序で表示されます。

コマンドラインインターフェイスの使用

コマンドラインインターフェイスで search コマンドを実行して、検索インデックスを使用してデータをクエリできます。詳細については、「検索インデックス」をご参照ください。

  1. search コマンドを実行して、search_index 検索インデックスを使用してテーブルからデータをクエリします。このコマンドは、すべてのインデックス付き列を返します。

    search -n search_index --return_all_indexed
  2. システムプロンプトに従ってクエリ条件を入力します。以下に例を示します。

    {
        "Offset": -1,
        "Limit": 10,
        "Collapse": null,
        "Sort": null,
        "GetTotalCount": true,
        "Token": null,
        "Query": {
            "Name": "RangeQuery",
            "Query": {
                "FieldName": "col_long",
                "From": 1,
                "To": 100,
                "IncludeLower": true,
                "IncludeUpper": false
            }
        }
    }

SDK の使用

範囲クエリは、Java SDK、Go SDK、Python SDK、Node.js SDK、.NET SDK、または PHP SDK を使用して実行できます。このトピックでは、Java SDK を例として使用します。

次の例では、price フィールド内の Long 型の値で、半開区間 [100, 500) に含まれるものをクエリします。このクエリは最大 10 行を返し、一致した行の総数を取得します。

String tableName = "example_table";
String indexName = "example_index";

RangeQuery rangeQuery = new RangeQuery();
rangeQuery.setFieldName("price");
rangeQuery.greaterThanOrEqual(ColumnValue.fromLong(100L));
rangeQuery.lessThan(ColumnValue.fromLong(500L));

SearchQuery searchQuery = new SearchQuery();
searchQuery.setQuery(rangeQuery);
searchQuery.setLimit(10);
searchQuery.setTrackTotalCount(SearchQuery.TRACK_TOTAL_COUNT);

SearchRequest request = new SearchRequest(tableName, indexName, searchQuery);
SearchRequest.ColumnsToGet columnsToGet = new SearchRequest.ColumnsToGet();
columnsToGet.setReturnAll(true);
request.setColumnsToGet(columnsToGet);

SearchResponse response = client.search(request);
System.out.println(response.getTotalCount());
System.out.println(response.getRows());

課金

検索インデックスを使用してデータをクエリすると、消費された読み取りスループットに対して課金されます。詳細については、「検索インデックスの課金項目」をご参照ください。

よくある質問

関連ドキュメント

  • 検索インデックスを使用してデータをクエリする場合、term クエリ、terms クエリ、match all クエリ、match クエリ、match phrase クエリ、prefix クエリ、range クエリ、wildcard クエリ、fuzzy クエリ、Boolean クエリ、geo クエリ、nested クエリ、KNN ベクトルクエリ、および exists クエリ を使用できます。 ビジネス要件に基づいてクエリ方法を選択し、複数のディメンションからデータをクエリできます。

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

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

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

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