全部产品
Search
文档中心

Tablestore:Kueri Geo

更新时间:Jul 06, 2025

Kueri geo diklasifikasikan ke dalam tiga jenis: kueri jarak geo, kueri kotak pembatas geo, dan kueri poligon geo.

Prasyarat

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.001 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_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, dan 29,119 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_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.