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

Tablestore:ジオクエリ

最終更新日:Aug 08, 2026

Tablestore SDK for Go を使用して、円形、矩形、または多角形の地理的範囲でジオポイントフィールドをクエリします。

前提条件

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

説明

ジオクエリは、指定された地理的エリア内のジオポイント値に一致します。距離ベースのジオクエリ(Geo distance query)、バウンディングボックスによるジオクエリ(Geo bounding box query)、およびポリゴンによるジオクエリ(Geo polygon query)がサポートされています。これら 3 つのクエリタイプはすべて latitude,longitude フォーマットを使用します。緯度は -90 から +90 の範囲、経度は -180 から +180 の範囲です。例:35.8,-45.91。

func (client *tablestore.TableStoreClient) Search(request *tablestore.SearchRequest) (*tablestore.SearchResponse, error)

距離ベースのジオクエリ

距離ベースのジオクエリは座標を中心として、その中心からの距離が指定値以内であるポイントに一致します。

tableName := "example_table"
indexName := "example_index"

query := &search.GeoDistanceQuery{FieldName: "location", CenterPoint: "30.25,120.16", DistanceInMeter: 50000}
searchQuery := search.NewSearchQuery().
    SetQuery(query).
    SetLimit(10).
    SetGetTotalCount(true)

response, err := client.Search(&tablestore.SearchRequest{
    TableName:   tableName,
    IndexName:   indexName,
    SearchQuery: searchQuery,
    ColumnsToGet: &tablestore.ColumnsToGet{
        ReturnAllFromIndex: true,
    },
})
if err != nil {
    log.Fatal(err)
}

fmt.Println(response.TotalCount)
fmt.Println(response.Rows)

バウンディングボックスによるジオクエリ

バウンディングボックスによるジオクエリは、左上と右下の座標で定義される矩形を使用します。

tableName := "example_table"
indexName := "example_index"

query := &search.GeoBoundingBoxQuery{FieldName: "location", TopLeft: "32,119", BottomRight: "29,122"}
searchQuery := search.NewSearchQuery().
    SetQuery(query).
    SetLimit(10).
    SetGetTotalCount(true)

response, err := client.Search(&tablestore.SearchRequest{
    TableName:   tableName,
    IndexName:   indexName,
    SearchQuery: searchQuery,
    ColumnsToGet: &tablestore.ColumnsToGet{
        ReturnAllFromIndex: true,
    },
})
if err != nil {
    log.Fatal(err)
}

fmt.Println(response.TotalCount)
fmt.Println(response.Rows)

ポリゴンによるジオクエリ

ポリゴンによるジオクエリは、複数の座標を順番に接続してポリゴンを形成します。

tableName := "example_table"
indexName := "example_index"

query := &search.GeoPolygonQuery{FieldName: "location", Points: []string{"29,119", "32,119", "32,122", "29,122"}}
searchQuery := search.NewSearchQuery().
    SetQuery(query).
    SetLimit(10).
    SetGetTotalCount(true)

response, err := client.Search(&tablestore.SearchRequest{
    TableName:   tableName,
    IndexName:   indexName,
    SearchQuery: searchQuery,
    ColumnsToGet: &tablestore.ColumnsToGet{
        ReturnAllFromIndex: true,
    },
})
if err != nil {
    log.Fatal(err)
}

fmt.Println(response.TotalCount)
fmt.Println(response.Rows)

パラメーター

クエリリクエスト

名前

型

説明

TableName (必須)

string

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

IndexName (必須)

string

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

SearchQuery (必須)

search.SearchQuery

クエリ条件および一般的なクエリ構成です。

ColumnsToGet (オプション)

*tablestore.ColumnsToGet

返却列の構成です。このパラメーターを省略した場合、プライマリキー列のみが返されます。

RoutingValues (オプション)

[]*tablestore.PrimaryKey

カスタムルートフィールドのプライマリキー値です。カスタムルーティングが設定されていない場合は、このパラメーターを省略してください。

TimeoutMs (オプション)

*int32

リクエストのタイムアウト期間(ミリ秒単位)です。

クエリ構成

名前

型

説明

SetQuery (必須)

search.Query

クエリ条件を指定します。

SetOffset (オプション)

int32

開始位置を指定します。デフォルト値は 0 です。オフセットベースのページネーションでは、Offset + Limit の合計が 100,000 を超えてはなりません。

SetLimit (オプション)

int32

返却する最大行数を指定します。デフォルト値は 10、最大値は 100 です。0 を指定すると、行は返されません。

SetCollapse (オプション)

*search.Collapse

クエリ結果を折りたたみます。詳細については、「クエリ結果の折りたたみ」をご参照ください。

SetSort (オプション)

*search.Sort

結果のソート順を指定します。詳細については、「結果のソートとページネーション」をご参照ください。

SetGetTotalCount (オプション)

bool

一致したすべての行をカウントするかどうかを指定します。デフォルト値は false です。

SetToken (オプション)

[]byte

前回の応答で返された NextToken 値を指定します。このメソッドはトークンに前ページのソート条件が含まれているため、Sort をクリアします。トークンベースのページネーションを使用する場合は、Offset を指定しないでください。

SetSearchFilter (オプション)

*search.SearchFilter

クエリ後のフィルターを適用します。詳細については、「クエリ後のフィルターの使用」をご参照ください。

Aggregation (オプション)

...search.Aggregation

集約を構成します。詳細については、「集約」をご参照ください。

GroupBy (オプション)

...search.GroupBy

グループ化を構成します。詳細については、「集約」をご参照ください。

距離ベースのジオクエリ条件

名前

型

説明

FieldName (必須)

string

ジオポイントフィールドの名前です。

CenterPoint (必須)

string

latitude,longitude フォーマットでの中心座標です。

DistanceInMeter (必須)

float64

クエリ半径(メートル単位)です。

バウンディングボックスによるジオクエリ条件

名前

型

説明

FieldName (必須)

string

ジオポイントフィールドの名前です。

TopLeft (必須)

string

左上の座標です。

BottomRight (必須)

string

右下の座標です。

ポリゴンによるジオクエリ条件

名前

型

説明

FieldName (必須)

string

ジオポイントフィールドの名前です。

Points (必須)

[]string

ポリゴンを形成する座標を順番に指定します。

返却列

名前

型

説明

Columns (オプション)

[]string

返却する属性列です。ReturnAll および ReturnAllFromIndex の両方が false の場合にのみ有効です。

ReturnAll (オプション)

bool

データテーブル内のすべての属性列を返すかどうかを指定します。デフォルト値は false です。

ReturnAllFromIndex (オプション)

bool

インデックスされたすべての属性列を返すかどうかを指定します。デフォルト値は false です。このパラメーターと ReturnAll を同時に true に設定しないでください。

応答

名前

型

説明

TotalCount

int64

一致した行の総数です。この値は SetGetTotalCount の設定に依存します。

Rows

[]*tablestore.Row

現在のクエリで返された行です。行数は SetLimit で指定された値を超えることはありません。

SearchHits

[]*tablestore.SearchHit

検索ヒットです。ハイライト、ネストされた inner hits、または関連スコアを使用する場合は、このフィールドを読み取ります。

NextToken

[]byte

次のページ用のトークンです。値が空でない場合は、次のクエリに渡してください。

IsAllSuccess

bool

すべてのインデックスパーティションがクエリされたかどうかを示します。false の場合、部分的な結果が返され、TotalCount が実際の一致行数より少なくなる可能性があります。

AggregationResults

search.AggregationResults

集約結果です。

GroupByResults

search.GroupByResults

グループ化結果です。