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

Tablestore:円形範囲検索

最終更新日:May 07, 2026

円形範囲検索を使用すると、中心点と半径で構成される円形の地理的エリアをクエリ条件として指定できます。Tablestore は、指定された列の値がこの円形地理エリア内に含まれる行を返します。

API オペレーション

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

パラメーター

パラメーター

説明

fieldName

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

centerPoint

中心点の座標ペア。座標ペアは緯度と経度の値で構成されます。

このパラメーターの値は latitude,longitude の形式である必要があります。緯度の有効値:[-90,+90]。経度の有効値:[-180,+180]。例:35.8,-45.91

distanceInMeter

円形地理エリアの半径。このパラメーターの値は DOUBLE データの型です。単位:メートル。

getTotalCount

クエリ条件を満たす行の合計数を返すかどうかを指定します。このパラメーターのデフォルト値は false であり、クエリ条件を満たす行の合計数を返さないことを意味します。

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

query

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

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. 論理演算子を選択します:[And][Or]、または [Not]

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

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

    4. インデックスフィールドのクエリタイプを GeoDistanceQuery に設定します。中心点の座標を入力し、ポイントを選択して距離を入力します。

      複数の中心点座標ペアを入力する場合は、上記の操作を繰り返します。

    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": "GeoDistanceQuery",
            "Query": {
                "FieldName": "col_geopoint",
                "CenterPoint": "35.8,-45.91",
                "DistanceInMeter": 100.0
            }
        }
    }

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 を使用して円形範囲検索を実行する方法を説明します。

以下のサンプルコードは、Col_GeoPoint 列の値が中心点からの指定距離内にある行をクエリする例を示しています。

public static void geoDistanceQuery(SyncClient client) {
    SearchQuery searchQuery = new SearchQuery();
    GeoDistanceQuery geoDistanceQuery = new GeoDistanceQuery();  // GeoDistanceQuery を使用します。 
    geoDistanceQuery.setFieldName("Col_GeoPoint");
    geoDistanceQuery.setCenterPoint("5,5"); // 中心点の座標を指定します。 
    geoDistanceQuery.setDistanceInMeter(10000); // 中心点からの距離を 10,000 以上に設定します。単位:メートル。 
    searchQuery.setQuery(geoDistanceQuery);
    //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());
}

課金

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

よくある質問

関連ドキュメント