Kueri geo diklasifikasikan menjadi beberapa jenis, yaitu kueri jarak geo, kueri kotak pembatas geo, dan kueri poligon geo.
Prasyarat
Instance OTSClient telah diinisialisasi. Untuk informasi lebih lanjut, lihat Inisialisasi instance OTSClient.
Tabel data telah dibuat dan data telah ditulis ke dalam tabel tersebut. Untuk informasi lebih lanjut, lihat Buat tabel data dan Tulis data.
Indeks pencarian telah dibuat untuk tabel data. Untuk informasi lebih lanjut, lihat Buat indeks pencarian.
Kueri jarak geo
Anda dapat menggunakan kueri jarak geo untuk menentukan area geografis melingkar dengan titik pusat dan radius sebagai kondisi penyaringan dalam sebuah kueri. Tablestore mengembalikan baris-baris yang nilai kolom Geopoint-nya berada dalam area geografis tersebut.
Parameter
Parameter
Deskripsi
tableName
Nama tabel data.
indexName
Nama indeks pencarian.
query
Jenis kueri. Atur jenis kueri menjadi TableStore.QueryType.GEO_DISTANCE_QUERY.
fieldName
Nama field. Tipe nilai field adalah Geopoint.
centerPoint
Pasangan koordinat titik pusat. Pasangan koordinat terdiri dari nilai lintang dan bujur.
Nilai parameter ini harus dalam format "lintang,bujur". Nilai valid untuk lintang: [-90,90]. Nilai valid untuk bujur: [-180,180]. Contoh: “35.8,-45.91".
distance
Radius area geografis melingkar. Nilai parameter ini bertipe DOUBLE. Satuan: meter.
Contoh
Berikut adalah contoh kode sampel untuk menanyakan baris-baris yang nilai kolom Col_GeoPoint-nya berada dalam area geografis melingkar tertentu.
client.search({ tableName: TABLE_NAME, indexName: INDEX_NAME, searchQuery: { offset: 0, limit: 10, // Untuk hanya menanyakan jumlah baris yang memenuhi kondisi kueri tanpa data spesifik, atur parameter limit ke 0. query: { // Atur jenis kueri menjadi TableStore.QueryType.GEO_DISTANCE_QUERY. queryType: TableStore.QueryType.GEO_DISTANCE_QUERY, query: { fieldName: "Col_GeoPoint", centerPoint: "1,1", // Tentukan pasangan koordinat untuk titik pusat. distance: 10000 // Atur jarak dari titik pusat ke nilai yang lebih kecil atau sama dengan 10.000. Satuan: meter. } }, getTotalCount: true // Tentukan apakah akan mengembalikan jumlah total baris yang memenuhi kondisi kueri. Nilai default: false. }, columnToGet: { // Tentukan kolom-kolom yang ingin Anda kembalikan. Anda dapat mengatur parameter ini ke RETURN_SPECIFIED untuk mengembalikan kolom-kolom tertentu, RETURN_ALL untuk mengembalikan semua kolom, RETURN_ALL_FROM_INDEX untuk mengembalikan semua kolom dalam indeks pencarian, atau RETURN_NONE untuk hanya mengembalikan kolom-kolom kunci utama. returnType: TableStore.ColumnReturnType.RETURN_ALL } }, function (err, data) { if (err) { console.log('error:', err); return; } console.log('success:', JSON.stringify(data, null, 2)); });
Kueri kotak pembatas geo
Anda dapat menggunakan kueri kotak pembatas geo untuk menentukan area geografis persegi panjang sebagai kondisi penyaringan dalam sebuah kueri. Tablestore mengembalikan baris-baris yang nilai kolom Geopoint-nya berada dalam area geografis tersebut.
Parameter
Parameter
Deskripsi
tableName
Nama tabel data.
indexName
Nama indeks pencarian.
query
Jenis kueri. Atur jenis kueri menjadi TableStore.QueryType.GEO_BOUNDING_BOX_QUERY.
fieldName
Nama field. Tipe nilai field adalah Geopoint.
topLeft
Pasangan koordinat sudut kiri atas area geografis persegi panjang.
bottomRight
Pasangan koordinat sudut kanan bawah area geografis persegi panjang. Pasangan koordinat sudut kiri atas dan kanan bawah mendefinisikan area geografis persegi panjang yang unik.
Nilai parameter ini harus dalam format "lintang,bujur". Nilai valid untuk lintang: [-90,90]. Nilai valid untuk bujur: [-180,180]. Contoh: “35.8,-45.91".
Contoh
Berikut adalah contoh kode sampel untuk menanyakan baris-baris yang nilai kolom Col_GeoPoint-nya berada dalam area geografis persegi panjang yang didefinisikan oleh sudut kiri atas dengan koordinat "10,0" dan sudut kanan bawah dengan koordinat "0,10".
client.search({ tableName: TABLE_NAME, indexName: INDEX_NAME, searchQuery: { offset: 0, limit: 10, // Untuk hanya menanyakan jumlah baris yang memenuhi kondisi kueri tanpa data spesifik, atur parameter limit ke 0. query: { // Atur jenis kueri menjadi TableStore.QueryType.GEO_BOUNDING_BOX_QUERY. queryType: TableStore.QueryType.GEO_BOUNDING_BOX_QUERY, query: { fieldName: "Col_GeoPoint", // Tentukan nama field. topLeft: "10,0", // Tentukan pasangan koordinat untuk sudut kiri atas area geografis persegi panjang. bottomRight: "0,10" // Tentukan pasangan koordinat untuk sudut kanan bawah area geografis persegi panjang. } }, getTotalCount: true // Tentukan apakah akan mengembalikan jumlah total baris yang memenuhi kondisi kueri. Nilai default: false. }, columnToGet: { // Tentukan kolom-kolom yang ingin Anda kembalikan. Anda dapat mengatur parameter ini ke RETURN_SPECIFIED untuk mengembalikan kolom-kolom tertentu, RETURN_ALL untuk mengembalikan semua kolom, RETURN_ALL_FROM_INDEX untuk mengembalikan semua kolom dalam indeks pencarian, atau RETURN_NONE untuk hanya mengembalikan kolom-kolom kunci utama. returnType: TableStore.ColumnReturnType.RETURN_ALL } }, function (err, data) { if (err) { console.log('error:', err); return; } console.log('success:', JSON.stringify(data, null, 2)); });
Kueri poligon geo
Anda dapat menggunakan kueri poligon geo untuk menentukan area geografis poligon. Tablestore mengembalikan baris-baris yang nilai kolom Geopoint-nya berada dalam area geografis tersebut.
Parameter
Parameter
Deskripsi
tableName
Nama tabel data.
indexName
Nama indeks pencarian.
query
Jenis kueri. Atur jenis kueri menjadi TableStore.QueryType.GEO_POLYGON_QUERY.
fieldName
Nama field. Tipe nilai field adalah Geopoint.
points
Pasangan koordinat titik-titik yang mendefinisikan area geografis poligon.
Pasangan koordinat setiap titik harus dalam format "lintang,bujur". Nilai valid untuk lintang: [-90,90]. Nilai valid untuk bujur: [-180,180]. Contoh: “35.8,-45.91".
Contoh
Berikut adalah contoh kode sampel untuk menanyakan baris-baris yang nilai kolom Col_GeoPoint-nya berada dalam area geografis poligon.
client.search({ tableName: TABLE_NAME, indexName: INDEX_NAME, searchQuery: { offset: 0, limit: 10, // Untuk hanya menanyakan jumlah baris yang memenuhi kondisi kueri tanpa data spesifik, atur parameter limit ke 0. query: { // Atur jenis kueri menjadi TableStore.QueryType.GEO_POLYGON_QUERY. queryType: TableStore.QueryType.GEO_POLYGON_QUERY, query: { fieldName: "Col_GeoPoint", points: ["0,0","5,5","5,0"] // Tentukan pasangan koordinat untuk simpul-simpul area geografis poligon. } }, getTotalCount: true // Tentukan apakah akan mengembalikan jumlah total baris yang memenuhi kondisi kueri. Nilai default: false. }, columnToGet: { // Tentukan kolom-kolom yang ingin Anda kembalikan. Anda dapat mengatur parameter ini ke RETURN_SPECIFIED untuk mengembalikan kolom-kolom tertentu, RETURN_ALL untuk mengembalikan semua kolom, RETURN_ALL_FROM_INDEX untuk mengembalikan semua kolom dalam indeks pencarian, atau RETURN_NONE untuk hanya mengembalikan kolom-kolom kunci utama. returnType: TableStore.ColumnReturnType.RETURN_ALL } }, function (err, data) { if (err) { console.log('error:', err); return; } console.log('success:', JSON.stringify(data, null, 2)); });
FAQ
Referensi
Indeks pencarian mendukung berbagai jenis kueri, termasuk: kueri tepat, kueri terms, kueri match all, kueri match, kueri match phrase, kueri prefix, kueri range, kueri wildcard, kueri Boolean, kueri geo, kueri nested, kueri vector, dan kueri exists. Anda dapat memilih jenis kueri sesuai dengan kebutuhan bisnis Anda.
Untuk mengurutkan atau membagi halaman hasil kueri, Anda dapat menggunakan fitur pengurutan dan paging. Untuk informasi lebih lanjut, lihat Pengurutan dan paging.
Untuk meruntuhkan set hasil berdasarkan kolom tertentu, Anda dapat menggunakan fitur collapse (distinct). Dengan cara ini, data tipe tertentu hanya muncul sekali dalam hasil kueri. Untuk informasi lebih lanjut, lihat Collapse (distinct).
Untuk menganalisis data dalam tabel, seperti mendapatkan nilai ekstrem, jumlah total, dan jumlah baris total, Anda dapat menggunakan operasi agregasi atau menjalankan pernyataan SQL. Untuk informasi lebih lanjut, lihat Agregasi dan Kueri SQL.
Untuk mendapatkan semua baris yang memenuhi kondisi kueri tanpa perlu mengurutkan, Anda dapat menggunakan fitur pemindaian paralel dengan memanggil operasi ParallelScan dan ComputeSplits. Untuk informasi lebih lanjut, lihat Pemindaian paralel.