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

Tablestore:四角形範囲検索

最終更新日:May 07, 2026

四角形範囲検索を使用すると、クエリ条件として長方形の地理的エリアを指定できます。Tablestore は、指定されたフィールドの値がこの長方形の地理的エリア内に含まれる行を返します。

API オペレーション

Search オペレーションまたは ParallelScan オペレーションでクエリタイプを GeoBoundingBoxQuery に設定することで、四角形範囲検索を実行できます。

パラメーター

パラメーター

説明

fieldName

クエリ対象の列名。このパラメーターの値は GEOPOINT データ型である必要があります。

topLeft

長方形の地理的エリアの左上隅の座標ペア。

bottomRight

長方形の地理的エリアの右下隅の座標ペア。長方形の地理的エリアは、左上隅と右下隅の座標ペアで指定できます。

フォーマットは latitude,longitude です。緯度の有効値: [-90,+90]。経度の有効値: [-180,+180]。例: 35.8,-45.91

query

多次元インデックスのクエリ文。このパラメーターを GeoBoundingBoxQuery に設定します。

getTotalCount

クエリ条件を満たす行の合計数を返すかどうかを指定します。デフォルト値は false で、クエリ条件を満たす行の合計数は返されません。

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

tableName

データテーブルの名前。

indexName

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

columnsToGet

クエリ条件を満たす各行のすべての列を返すかどうかを指定します。このパラメーターでは、returnAll フィールドおよび columns フィールドを指定できます。

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

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

方法

Tablestore コンソール、Tablestore CLI、および Tablestore SDK を使用して四角形範囲検索を実行できます。四角形範囲検索を実行する前に、以下の前提条件を満たしていることを確認してください。

Tablestore コンソールの使用

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

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

    2. 上部ナビゲーションバーで、リソースグループとリージョンを選択します。

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

    4. インスタンス詳細 タブの データテーブル一覧 タブで、データテーブル名をクリックするか、操作列の インデックス管理 をクリックします。

  2. インデックス管理 タブで、対象の多次元インデックスを見つけ、操作 列の 検索 をクリックします。

  3. 検索 ダイアログボックスで、クエリを設定します。

    1. デフォルトでは、すべての列が返されます。特定の列のみを返す場合は、すべての列を取得 をオフにして、列名をカンマ区切りで入力します。

      説明

      デフォルトでは、Table Store はデータテーブルのプライマリキー列を返します。

    2. 論理演算子を選択します:AndOr、または Not

      And を選択すると、すべての指定条件を満たすデータが返されます。Or を選択すると、いずれか 1 つ以上の指定条件を満たすデータが返されます。Not を選択すると、指定条件を満たさないデータが返されます。

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

    4. インデックスフィールドのクエリタイプを GeoBoundingBoxQuery に設定し、長方形の左上隅および右下隅の座標を入力します。

    5. デフォルトではソートは無効です。特定のフィールドで結果をソートするには、ソートを有効化 をオンにして、ソートフィールドを追加し、ソート順を設定します。

    6. デフォルトでは集約は無効です。特定のフィールドで統計集約を実行するには、集約を有効化 をオンにして、集約対象フィールドを追加し、集約設定を構成します。

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

    クエリ結果は インデックス管理 タブに表示されます。

Tablestore CLI の使用

Tablestore CLI を使用して、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": "GeoBoundingBoxQuery",
            "Query": {
                "FieldName": "col_geopoint",
                "TopLeft": "10,0",
                "BottomRight": "0,10"
            }
        }
    }

Tablestore SDK の使用

Tablestore SDK for JavaTablestore SDK for GoTablestore SDK for PythonTablestore SDK for Node.jsTablestore SDK for .NET、および Tablestore SDK for PHP を使用して四角形範囲検索を実行できます。以下の例では、Tablestore SDK for Java を使用して四角形範囲検索を実行する方法を説明します。

以下のサンプルコードは、「10,0」を左上隅、「0,10」を右下隅とする長方形の地理的エリア内に Col_GeoPoint 列の値が含まれる行をクエリする例を示しています。

public static void geoBoundingBoxQuery(SyncClient client) {
    SearchQuery searchQuery = new SearchQuery();
    GeoBoundingBoxQuery geoBoundingBoxQuery = new GeoBoundingBoxQuery(); // GeoBoundingBoxQuery を使用します。
    geoBoundingBoxQuery.setFieldName("Col_GeoPoint"); // クエリ対象の列名を指定します。
    geoBoundingBoxQuery.setTopLeft("10,0"); // 長方形の地理的エリアの左上隅の座標を指定します。
    geoBoundingBoxQuery.setBottomRight("0,10"); // 長方形の地理的エリアの右下隅の座標を指定します。
    searchQuery.setQuery(geoBoundingBoxQuery);
    //searchQuery.setGetTotalCount(true); // GetTotalCount パラメーターを true に設定して、クエリ条件を満たす行の合計数を返します。

    SearchRequest searchRequest = new SearchRequest("<TABLE_NAME>", "<SEARCH_INDEX_NAME>", searchQuery);
    // columnsToGet パラメーターを使用して返す列を指定するか、すべての列を返すように指定できます。このパラメーターを指定しない場合、プライマリキー列のみが返されます。
    //SearchRequest.ColumnsToGet columnsToGet = new SearchRequest.ColumnsToGet();
    //columnsToGet.setReturnAll(true); // すべての列を返すように指定します。
    //columnsToGet.setColumns(Arrays.asList("ColName1","ColName2")); // 返す列を指定します。
    //searchRequest.setColumnsToGet(columnsToGet);

    SearchResponse resp = client.search(searchRequest);
    //System.out.println("TotalCount: " + resp.getTotalCount()); // 返された行数ではなく、クエリ条件を満たす行の合計数を表示します。
    System.out.println("Row: " + resp.getRows());
}

課金

多次元インデックスを使用したデータのクエリは、読み取りスループットを消費します。詳細については、「多次元インデックスのメータリングと課金」をご参照ください。

よくある質問

関連ドキュメント