All Products
Search
Document Center

Tablestore:Kueri geografis

Last Updated:Aug 08, 2026

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 latitude,longitude.

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.