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 |
|
|
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 |
グループ化結果です。 |