Kueri geo diklasifikasikan ke dalam tiga jenis: 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 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
Untuk melakukan kueri jarak geo, tentukan area geografis melingkar menggunakan titik pusat dan radius. Tablestore mengembalikan baris-baris yang nilai kolom tertentu berada dalam area geografis melingkar tersebut.
Parameter
Parameter
Deskripsi
table_name
Nama tabel data.
index_name
Nama indeks pencarian.
query
Pernyataan kueri untuk indeks pencarian. Untuk menggunakan kueri jarak geo, atur tipe kueri ke QueryTypeConst::GEO_DISTANCE_QUERY.
field_name
Nama kolom yang ingin Anda kueri. Nilai parameter ini adalah tipe data GEOPOINT.
center_point
Pasangan koordinat dari titik pusat. Pasangan koordinat terdiri dari nilai lintang dan bujur.
Pasangan koordinat dalam format
lintang,bujur. Nilai valid lintang: [-90,+90]. Nilai valid bujur: [-180,+180]. Contoh:35.8,-45.91.distance
Radius area geografis melingkar. Nilai parameter ini adalah tipe data DOUBLE. Satuan: meter.
Contoh
Berikut adalah kode contoh untuk mengkueri semua baris yang datanya di kolom geo tidak lebih dari 1.000 meter dari titik pusat
30.001,120.001dalam tabel data.$request = array( 'table_name' => 'php_sdk_test', 'index_name' => 'php_sdk_test_search_index', 'search_query' => array( 'offset' => 0, 'limit' => 2, 'get_total_count' => true, 'query' => array( 'query_type' => QueryTypeConst::GEO_DISTANCE_QUERY, 'query' => array( 'field_name' => 'geo', 'center_point' => '30.001,120.001', 'distance' => 1000 ) ), 'sort' => array( array( 'geo_distance_sort' => array( 'field_name' => 'geo', 'order' => SortOrderConst::SORT_ORDER_ASC, 'distance_type' => GeoDistanceTypeConst::GEO_DISTANCE_PLANE, 'points' => array('30,120') ) ), ) ), 'columns_to_get' => array( 'return_type' => ColumnReturnTypeConst::RETURN_SPECIFIED, 'return_names' => array('geo') ) ); $response = $otsClient->search($request);
Kueri kotak pembatas geo
Untuk melakukan kueri kotak pembatas geo, tentukan area geografis persegi panjang menggunakan sudut kiri atas dan sudut kanan bawah. Tablestore mengembalikan baris-baris yang nilai kolom tertentu berada dalam area geografis persegi panjang tersebut.
Parameter
Parameter
Deskripsi
table_name
Nama tabel data.
index_name
Nama indeks pencarian.
query
Pernyataan kueri untuk indeks pencarian. Untuk menggunakan kueri kotak pembatas geo, atur tipe kueri ke QueryTypeConst::GEO_BOUNDING_BOX_QUERY.
field_name
Nama kolom yang ingin Anda kueri. Nilai parameter ini adalah tipe data GEOPOINT.
top_left
Pasangan koordinat dari sudut kiri atas area geografis persegi panjang.
bottom_right
Pasangan koordinat dari sudut kanan bawah kotak persegi panjang. Area geografis persegi panjang dapat ditentukan oleh sudut kiri atas dan sudut kanan bawah.
Pasangan koordinat dalam format
lintang,bujur. Nilai valid lintang: [-90,+90]. Nilai valid bujur: [-180,+180]. Contoh:35.8,-45.91.Contoh
Berikut adalah kode contoh untuk mengkueri semua baris yang datanya di kolom geo berada dalam area persegi panjang yang didefinisikan oleh titik kiri atas (koordinat:
31,119) dan titik kanan bawah (koordinat:29,121) dalam tabel data.$request = array( 'table_name' => 'php_sdk_test', 'index_name' => 'php_sdk_test_search_index', 'search_query' => array( 'offset' => 0, 'limit' => 2, 'get_total_count' => true, 'query' => array( 'query_type' => QueryTypeConst::GEO_BOUNDING_BOX_QUERY, 'query' => array( 'field_name' => 'geo', 'top_left' => '31,119', 'bottom_right' => '29,121' ) ), 'sort' => array( array( 'geo_distance_sort' => array( 'field_name' => 'geo', 'order' => SortOrderConst::SORT_ORDER_ASC, 'distance_type' => GeoDistanceTypeConst::GEO_DISTANCE_PLANE, 'points' => array('30,120') ) ), ) ), 'columns_to_get' => array( 'return_type' => ColumnReturnTypeConst::RETURN_SPECIFIED, 'return_names' => array('geo') ) ); $response = $otsClient->search($request);
Kueri poligon geo
Untuk melakukan kueri poligon geo, tentukan area geografis poligon menggunakan pasangan koordinat dari beberapa titik. Tablestore mengembalikan baris-baris yang nilai kolom tertentu berada dalam area geografis poligon tersebut.
Parameter
Parameter
Deskripsi
table_name
Nama tabel data.
index_name
Nama indeks pencarian.
query
Pernyataan kueri untuk indeks pencarian. Untuk menggunakan kueri poligon geo, atur tipe kueri ke QueryTypeConst::GEO_POLYGON_QUERY.
field_name
Nama kolom yang ingin Anda kueri. Nilai parameter ini adalah tipe data GEOPOINT.
points
Pasangan koordinat dari titik-titik yang mendefinisikan area geografis poligon. Anda dapat menentukan poligon dengan menggunakan beberapa pasangan koordinat.
Pasangan koordinat dalam format
lintang,bujur. Nilai valid lintang: [-90,+90]. Nilai valid bujur: [-180,+180]. Contoh:35.8,-45.91.Contoh
Berikut adalah kode contoh untuk mengkueri semua baris yang datanya di kolom geo berada dalam area poligon yang didefinisikan oleh titik-titik dengan koordinat masing-masing
31,120,29,121, dan29,119dalam tabel data.$request = array( 'table_name' => 'php_sdk_test', 'index_name' => 'php_sdk_test_search_index', 'search_query' => array( 'offset' => 0, 'limit' => 2, 'get_total_count' => true, 'query' => array( 'query_type' => QueryTypeConst::GEO_POLYGON_QUERY, 'query' => array( 'field_name' => 'geo', 'points' => array( "31,120", "29,121", "29,119" ) ) ), 'sort' => array( array( 'geo_distance_sort' => array( 'field_name' => 'geo', 'order' => SortOrderConst::SORT_ORDER_ASC, 'distance_type' => GeoDistanceTypeConst::GEO_DISTANCE_PLANE, 'points' => array('30,120') ) ), ) ), 'columns_to_get' => array( 'return_type' => ColumnReturnTypeConst::RETURN_SPECIFIED, 'return_names' => array('geo') ) ); $response = $otsClient->search($request);
FAQ
Referensi
Saat menggunakan indeks pencarian untuk mengkueri data, Anda dapat menggunakan metode kueri berikut: kueri tepat, kueri terms, kueri match all, kueri match, kueri match phrase, kueri prefix, kueri range, kueri wildcard, kueri Boolean, kueri geo, kueri nested, dan kueri exists. Anda dapat menggunakan metode kueri yang berbeda untuk mengkueri data dari berbagai dimensi sesuai kebutuhan bisnis Anda.
Jika ingin mengurutkan atau membagi halaman baris yang memenuhi kondisi kueri, Anda dapat menggunakan fitur pengurutan dan paging. Untuk informasi lebih lanjut, lihat Pengurutan dan paging.
Jika ingin meruntuhkan set hasil berdasarkan kolom tertentu, Anda dapat menggunakan fitur collapse (distinct). Dengan cara ini, data dari tipe yang ditentukan hanya muncul sekali dalam hasil kueri. Untuk informasi lebih lanjut, lihat Collapse (distinct).
Jika ingin menganalisis data dalam tabel data, seperti mendapatkan nilai ekstrem, jumlah total, dan jumlah baris, Anda dapat melakukan operasi agregasi atau menjalankan pernyataan SQL. Untuk informasi lebih lanjut, lihat Agregasi dan Kueri SQL.
Jika ingin dengan cepat mendapatkan semua baris yang memenuhi kondisi kueri tanpa perlu mengurutkan baris, Anda dapat memanggil operasi ParallelScan dan ComputeSplits untuk menggunakan fitur pemindaian paralel. Untuk informasi lebih lanjut, lihat Pemindaian paralel.