Gunakan Tablestore SDK untuk Go untuk melakukan kueri terhadap bidang Geo-point berdasarkan rentang geografis berbentuk lingkaran, persegi panjang, atau poligon.
Prasyarat
Instal Tablestore Go SDK dan inisialisasi client.
Deskripsi
Kueri geografis mencocokkan nilai Geo-point dalam area geografis tertentu. Didukung tiga jenis kueri: kueri jarak geografis, kueri kotak pembatas geografis, dan kueri poligon geografis. Ketiganya menggunakan format latitude,longitude, dengan latitude berkisar dari -90 hingga +90 dan longitude dari -180 hingga +180. Contoh: 35.8,-45.91.
func (client *tablestore.TableStoreClient) Search(request *tablestore.SearchRequest) (*tablestore.SearchResponse, error)
Geo distance query
GeoDistanceQuery menggunakan koordinat sebagai pusat dan mencocokkan titik-titik yang jaraknya dari pusat tidak melebihi nilai yang ditentukan.
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)
Geo bounding box query
GeoBoundingBoxQuery menentukan persegi panjang berdasarkan koordinat kiri atas dan kanan bawah.
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)
Geo polygon query
GeoPolygonQuery menghubungkan beberapa koordinat secara berurutan untuk membentuk poligon.
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)
Parameter
Permintaan kueri
|
Name |
Type |
Description |
|
TableName (required) |
string |
Nama tabel data. |
|
IndexName (required) |
string |
Nama indeks pencarian. |
|
SearchQuery (required) |
search.SearchQuery |
Kondisi kueri dan konfigurasi kueri umum. |
|
ColumnsToGet (optional) |
*tablestore.ColumnsToGet |
Konfigurasi kolom yang dikembalikan. Jika parameter ini dihilangkan, hanya kolom kunci primer yang dikembalikan. |
|
RoutingValues (optional) |
[]*tablestore.PrimaryKey |
Nilai kunci primer untuk bidang routing kustom. Hilangkan parameter ini jika routing kustom tidak dikonfigurasi. |
|
TimeoutMs (optional) |
*int32 |
Periode timeout permintaan dalam milidetik. |
Konfigurasi kueri
|
Name |
Type |
Description |
|
SetQuery (required) |
search.Query |
Menentukan kondisi kueri. |
|
SetOffset (optional) |
int32 |
Menentukan posisi awal. Nilai default: 0. Untuk paginasi berbasis offset, Offset + Limit tidak boleh melebihi 100.000. |
|
SetLimit (optional) |
int32 |
Menentukan jumlah maksimum baris yang dikembalikan. Nilai default: 10. Nilai maksimum: 100. Nilai 0 tidak mengembalikan baris apa pun. |
|
SetCollapse (optional) |
*search.Collapse |
Menciutkan hasil kueri. Untuk informasi selengkapnya, lihat Ciutkan hasil kueri. |
|
SetSort (optional) |
*search.Sort |
Menentukan urutan pengurutan hasil. Untuk informasi selengkapnya, lihat Urutkan dan lakukan paginasi hasil. |
|
SetGetTotalCount (optional) |
bool |
Menentukan apakah akan menghitung semua baris yang cocok. Nilai default: false. |
|
SetToken (optional) |
[]byte |
Menentukan nilai NextToken yang dikembalikan oleh respons sebelumnya. Metode ini menghapus Sort karena token berisi kondisi pengurutan halaman sebelumnya. Jangan tentukan Offset saat menggunakan paginasi berbasis token. |
|
SetSearchFilter (optional) |
*search.SearchFilter |
Terapkan filter pasca-kueri. Untuk informasi selengkapnya, lihat Gunakan filter pasca-kueri. |
|
Aggregation (optional) |
...search.Aggregation |
Konfigurasikan agregasi. Untuk informasi selengkapnya, lihat Agregasi. |
|
GroupBy (optional) |
...search.GroupBy |
Konfigurasikan pengelompokan. Untuk informasi selengkapnya, lihat Agregasi. |
Kondisi kueri geo distance
|
Name |
Type |
Description |
|
FieldName (required) |
string |
Nama bidang Geo-point. |
|
CenterPoint (required) |
string |
Koordinat pusat dalam format |
|
DistanceInMeter (required) |
float64 |
Jari-jari kueri dalam meter. |
Kondisi kueri geo bounding box
|
Name |
Type |
Description |
|
FieldName (required) |
string |
Nama bidang Geo-point. |
|
TopLeft (required) |
string |
Koordinat kiri atas. |
|
BottomRight (required) |
string |
Koordinat kanan bawah. |
Kondisi kueri geo polygon
|
Name |
Type |
Description |
|
FieldName (required) |
string |
Nama bidang Geo-point. |
|
Points (required) |
[]string |
Koordinat yang membentuk poligon secara berurutan. |
Kolom yang dikembalikan
|
Name |
Type |
Description |
|
Columns (optional) |
[]string |
Kolom atribut yang dikembalikan. Parameter ini hanya berlaku ketika ReturnAll dan ReturnAllFromIndex keduanya bernilai false. |
|
ReturnAll (optional) |
bool |
Menentukan apakah akan mengembalikan semua kolom atribut dalam tabel data. Nilai default: false. |
|
ReturnAllFromIndex (optional) |
bool |
Menentukan apakah akan mengembalikan semua kolom atribut yang diindeks. Nilai default: false. Jangan atur parameter ini dan ReturnAll ke true secara bersamaan. |
Respons
|
Name |
Type |
Description |
|
TotalCount |
int64 |
Jumlah total baris yang cocok. Nilainya bergantung pada SetGetTotalCount. |
|
Rows |
[]*tablestore.Row |
Baris yang dikembalikan oleh kueri saat ini. Jumlahnya tidak melebihi nilai yang ditentukan oleh SetLimit. |
|
SearchHits |
[]*tablestore.SearchHit |
Hasil pencarian. Baca bidang ini saat Anda menggunakan penyorotan (highlighting), nested inner hits, atau skor relevansi. |
|
NextToken |
[]byte |
Token untuk halaman berikutnya. Jika nilainya tidak kosong, teruskan ke kueri berikutnya. |
|
IsAllSuccess |
bool |
Menunjukkan apakah semua partisi indeks telah dikueri. Jika nilainya false, hasil parsial dikembalikan dan TotalCount mungkin kurang dari jumlah sebenarnya dari baris yang cocok. |
|
AggregationResults |
search.AggregationResults |
Hasil agregasi. |
|
GroupByResults |
search.GroupByResults |
Hasil pengelompokan. |