Kueri geo diklasifikasikan ke dalam jenis-jenis berikut: kueri jarak geo, kueri kotak pembatas geo, dan kueri poligon geo.
Prasyarat
Sebuah instance OTSClient telah diinisialisasi. Untuk informasi lebih lanjut, lihat Inisialisasi klien Tablestore.
Sebuah tabel data telah dibuat dan data telah ditulis ke tabel tersebut. Untuk informasi lebih lanjut, lihat Buat tabel data dan Tulis data.
Sebuah indeks pencarian telah dibuat untuk tabel data. Untuk informasi lebih lanjut, lihat Buat indeks pencarian.
Kueri jarak geo
Untuk melakukan kueri jarak geo, tentukan area geografis melingkar dengan menggunakan titik pusat dan radius. Tablestore mengembalikan baris-baris di mana nilai kolom tertentu berada dalam area geografis melingkar tersebut.
Parameter
Parameter
Deskripsi
field_name
Nama kolom yang ingin Anda kueri. Nilai parameter ini bertipe data GEOPOINT.
center_point
Pasangan koordinat dari titik pusat. Pasangan koordinat terdiri dari nilai lintang dan bujur.
Pasangan koordinat berada dalam format
lintang,bujur. Nilai valid untuk lintang: [-90,+90]. Nilai valid untuk bujur: [-180,+180]. Contoh:35.8,-45.91.distance
Radius dari area geografis melingkar. Nilai parameter ini bertipe data DOUBLE. Satuan: meter.
query
Pernyataan kueri untuk indeks pencarian. Atur parameter ini ke GeoDistanceQuery.
table_name
Nama tabel data.
index_name
Nama indeks pencarian.
Contoh
Berikut adalah contoh kode sampel tentang cara mengkueri baris-baris di mana nilai kolom Col_GeoPoint berada dalam area geografis melingkar yang memiliki titik pusat '32.5,116.5' dan radius hingga 300.000 meter:
query = GeoDistanceQuery('Col_GeoPoint', '32.5,116.5', 300000) rows, next_token, total_count, is_all_succeed, agg_results, group_by_results = client.search( '<TABLE_NAME>', '<SEARCH_INDEX_NAME>', SearchQuery(query, limit=100, get_total_count=True), ColumnsToGet(return_type=ColumnReturnType.ALL) ).v1_response()
Kueri kotak pembatas geo
Untuk melakukan kueri kotak pembatas geo, tentukan area geografis persegi panjang dengan menggunakan sudut kiri atas dan sudut kanan bawah. Tablestore mengembalikan baris-baris di mana nilai kolom tertentu berada dalam area geografis persegi panjang tersebut.
Parameter
Parameter
Deskripsi
field_name
Nama kolom yang ingin Anda kueri. Nilai parameter ini bertipe data GEOPOINT.
top_left
Pasangan koordinat dari sudut kiri atas area geografis persegi panjang.
bottom_right
Pasangan koordinat dari sudut kanan bawah area geografis persegi panjang. Area geografis persegi panjang dapat ditentukan dengan menggunakan sudut kiri atas dan sudut kanan bawah.
Pasangan koordinat berada dalam format
lintang,bujur. Nilai valid untuk lintang: [-90,+90]. Nilai valid untuk bujur: [-180,+180]. Contoh:35.8,-45.91.query
Pernyataan kueri untuk indeks pencarian. Atur parameter ini ke GeoBoundingBoxQuery.
table_name
Nama tabel data.
index_name
Nama indeks pencarian.
Contoh
Berikut adalah contoh kode sampel tentang cara mengkueri baris-baris di mana nilai kolom Col_GeoPoint berada dalam area geografis persegi panjang yang memiliki sudut kiri atas di '30.9,112.0' dan sudut kanan bawah di '30.2,119.0':
query = GeoBoundingBoxQuery('Col_GeoPoint', '30.9,112.0', '30.2,119.0') rows, next_token, total_count, is_all_succeed, agg_results, group_by_results = client.search( '<TABLE_NAME>', '<SEARCH_INDEX_NAME>', SearchQuery(query, limit=100, get_total_count=True), ColumnsToGet(return_type=ColumnReturnType.ALL) ).v1_response()
Kueri poligon geo
Untuk melakukan kueri poligon geo, tentukan area geografis poligon dengan menggunakan pasangan koordinat dari beberapa titik. Tablestore mengembalikan baris-baris di mana nilai kolom tertentu berada dalam area geografis poligon tersebut.
Parameter
Parameter
Deskripsi
field_name
Nama kolom yang ingin Anda kueri. Nilai parameter ini bertipe data GEOPOINT.
points
Pasangan koordinat dari titik-titik yang mendefinisikan area geografis poligon. Anda dapat menentukan poligon dengan menggunakan beberapa pasangan koordinat.
Pasangan koordinat berada dalam format
lintang,bujur. Nilai valid untuk lintang: [-90,+90]. Nilai valid untuk bujur: [-180,+180]. Contoh:35.8,-45.91.query
Pernyataan kueri untuk indeks pencarian. Atur parameter ini ke GeoPolygonQuery.
table_name
Nama tabel data.
index_name
Nama indeks pencarian.
Contoh
Berikut adalah contoh kode sampel tentang cara mengkueri baris-baris di mana nilai kolom Col_Geopoint berada dalam area geografis poligon yang terdiri dari koordinat '30.9,112.0', '30.5,115.0', '30.3, 117.0', dan '30.2,119.0':
query = GeoPolygonQuery('Col_GeoPoint', ['30.9,112.0', '30.5,115.0', '30.3, 117.0', '30.2,119.0']) rows, next_token, total_count, is_all_succeed, agg_results, group_by_results = client.search( '<TABLE_NAME>', '<SEARCH_INDEX_NAME>', SearchQuery(query, limit=100, get_total_count=True), ColumnsToGet(return_type=ColumnReturnType.ALL) ).v1_response()
FAQ
Referensi
Saat Anda menggunakan indeks pencarian untuk mengkueri data, Anda dapat menggunakan metode kueri berikut: kueri tepat, kueri multi-tepat, kueri cocok semua, kueri cocok, kueri frasa cocok, kueri awalan, kueri rentang, kueri wildcard, kueri geo, kueri Boolean, kueri vektor KNN, kueri bersarang, dan kueri eksistensi. Anda dapat menggunakan metode kueri yang disediakan oleh indeks pencarian untuk mengkueri data dari berbagai dimensi sesuai dengan kebutuhan bisnis Anda.
Anda dapat mengurutkan atau membagi halaman baris yang memenuhi kondisi kueri dengan menggunakan fitur pengurutan dan paginasi. Untuk informasi lebih lanjut, lihat Pengurutan dan paginasi.
Anda dapat menggunakan fitur collapse (distinct) untuk meruntuhkan set hasil berdasarkan kolom tertentu. Dengan cara ini, data dari tipe tertentu hanya muncul sekali dalam hasil kueri. Untuk informasi lebih lanjut, lihat Collapse (distinct).
Jika Anda ingin menganalisis data dalam tabel data, Anda dapat menggunakan fitur agregasi dari operasi Search atau menjalankan pernyataan SQL. Misalnya, Anda dapat memperoleh nilai minimum dan maksimum, jumlah, dan total jumlah baris. Untuk informasi lebih lanjut, lihat Agregasi dan Kueri SQL.
Jika Anda ingin memperoleh semua baris yang memenuhi kondisi kueri tanpa perlu mengurutkan baris-baris tersebut, Anda dapat memanggil operasi ParallelScan dan ComputeSplits untuk menggunakan fitur pemindaian paralel. Untuk informasi lebih lanjut, lihat Pemindaian paralel.