全部产品
Search
文档中心

Tablestore:Kueri jarak geografis

更新时间:Jul 06, 2025

Kueri jarak geografis memungkinkan Anda menentukan area geografis berbentuk lingkaran, yang terdiri dari titik pusat dan radius, sebagai kondisi kueri. Tablestore mengembalikan baris di mana nilai kolom yang ditentukan berada dalam area tersebut.

Operasi API

Anda dapat mengatur tipe kueri menjadi GeoDistanceQuery dalam operasi Search atau ParallelScan untuk menjalankan kueri jarak geografis.

Parameter

Parameter

Deskripsi

fieldName

Nama kolom yang ingin Anda kueri. Nilai parameter ini bertipe data 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.

distanceInMeter

Radius area geografis berbentuk lingkaran. Nilai parameter ini bertipe data DOUBLE. Satuan: meter.

getTotalCount

Menentukan apakah akan mengembalikan jumlah total baris yang memenuhi kondisi kueri. Nilai default parameter ini adalah false, yang menentukan bahwa jumlah total baris yang memenuhi kondisi kueri tidak dikembalikan.

Jika Anda mengatur parameter ini ke true, performa kueri akan terpengaruh.

query

Pernyataan kueri untuk indeks pencarian. Atur parameter ini ke GeoDistanceQuery.

tableName

Nama tabel data.

indexName

Nama indeks pencarian.

columnsToGet

Menentukan apakah akan mengembalikan semua kolom setiap baris yang memenuhi kondisi kueri. Anda dapat menentukan bidang returnAll dan columns untuk parameter ini.

Nilai default bidang returnAll adalah false, yang menentukan bahwa tidak semua kolom dikembalikan. Dalam hal ini, Anda dapat menggunakan bidang columns untuk menentukan kolom yang ingin Anda kembalikan. Jika Anda tidak menentukan kolom yang ingin Anda kembalikan, hanya kolom kunci utama yang dikembalikan.

Jika Anda mengatur bidang returnAll ke true, semua kolom dikembalikan.

Metode

Anda dapat menjalankan kueri jarak geografis menggunakan konsol Tablestore, CLI Tablestore, atau SDK Tablestore. Pastikan prasyarat berikut terpenuhi sebelum melanjutkan:

Gunakan Konsol Tablestore

  1. Pergi ke tab Indexes.

    1. Masuk ke konsol Tablestore.

    2. Di bilah navigasi atas, pilih grup sumber daya dan wilayah.

    3. Di halaman Overview, klik nama instance yang ingin dikelola atau pilih Manage Instance di kolom Actions.

    4. Di tab Tables pada halaman Instance Details, klik nama tabel data atau pilih Indexes di kolom Tindakan tabel data.

  2. Di tab Indexes, temukan indeks pencarian yang ingin digunakan dan klik Manage Data di kolom Actions.

  3. Di kotak dialog Search, konfigurasikan parameter kueri.

    1. Secara default, sistem mengembalikan semua kolom atribut. Untuk mengembalikan kolom tertentu, nonaktifkan All Columns dan tentukan kolom yang ingin dikembalikan. Pisahkan beberapa kolom dengan koma (,).

      Catatan

      Secara default, sistem mengembalikan semua kolom kunci utama tabel data.

    2. Pilih operator logika And, Or, atau Not sesuai kebutuhan bisnis Anda.

      Jika Anda memilih operator logika And, data yang memenuhi kondisi kueri dikembalikan. Jika Anda memilih operator Or dan menentukan satu kondisi kueri, data yang memenuhi kondisi kueri dikembalikan. Jika Anda memilih operator logika Atau dan menentukan beberapa kondisi kueri, data yang memenuhi salah satu kondisi kueri dikembalikan. Jika Anda memilih operator logika Not, data yang tidak memenuhi kondisi kueri dikembalikan.

    3. Pilih bidang indeks bertipe data GEOPOINT dan klik Add.

    4. Atur tipe kueri bidang indeks ke GeoDistanceQuery, masukkan koordinat titik pusat, dan tentukan jarak.

      Untuk memasukkan beberapa koordinat titik pusat, ulangi langkah sebelumnya.

    5. Secara default, fitur pengurutan dinonaktifkan. Untuk mengurutkan hasil kueri berdasarkan bidang tertentu, aktifkan Sort dan tentukan bidang serta urutan pengurutan.

    6. Secara default, fitur agregasi dinonaktifkan. Untuk mengumpulkan statistik pada bidang tertentu, aktifkan Collect Statistics, tentukan bidang yang ingin dianalisis, dan konfigurasikan informasi yang diperlukan.

  4. Klik OK.

    Data yang memenuhi kondisi kueri akan ditampilkan di tab Indexes.

Gunakan CLI Tablestore

Anda dapat menggunakan CLI Tablestore untuk menjalankan perintah search guna mengkueri data menggunakan indeks pencarian. Untuk informasi lebih lanjut, lihat Indeks pencarian.

  1. Jalankan perintah search untuk menggunakan indeks pencarian search_index dan mengembalikan semua kolom terindeks setiap baris yang memenuhi kondisi kueri.

    search -n search_index --return_all_indexed
  2. Contoh kode berikut menunjukkan cara memasukkan kondisi kueri seperti yang diprompt oleh sistem:

    {
        "Offset": -1,
        "Limit": 10,
        "Collapse": null,
        "Sort": null,
        "GetTotalCount": true,
        "Token": null,
        "Query": {
            "Name": "GeoDistanceQuery",
            "Query": {
                "FieldName": "col_geopoint",
                "CenterPoint": "35.8,-45.91",
                "DistanceInMeter": 100.0
            }
        }
    }

Gunakan SDK Tablestore

Anda dapat menjalankan kueri jarak geografis menggunakan SDK Tablestore untuk Java, SDK Tablestore untuk Go, SDK Tablestore untuk Python, SDK Tablestore untuk Node.js, SDK Tablestore untuk .NET, dan SDK Tablestore untuk PHP. Contoh berikut menggunakan SDK Tablestore untuk Java untuk menggambarkan cara menjalankan kueri jarak geografis.

Contoh kode berikut menunjukkan cara mengkueri baris di mana nilai kolom Col_GeoPoint berada dalam jarak tertentu dari titik pusat.

public static void geoDistanceQuery(SyncClient client) {
    SearchQuery searchQuery = new SearchQuery();
    GeoDistanceQuery geoDistanceQuery = new GeoDistanceQuery();  // Gunakan GeoDistanceQuery. 
    geoDistanceQuery.setFieldName("Col_GeoPoint");
    geoDistanceQuery.setCenterPoint("5,5"); // Tentukan koordinat titik pusat. 
    geoDistanceQuery.setDistanceInMeter(10000); // Atur jarak dari titik pusat ke nilai lebih besar dari atau sama dengan 10.000. Satuan: meter. 
    searchQuery.setQuery(geoDistanceQuery);
    //searchQuery.setGetTotalCount(true); // Atur parameter GetTotalCount ke true untuk mengembalikan jumlah total baris yang memenuhi kondisi kueri. 

    SearchRequest searchRequest = new SearchRequest("<TABLE_NAME>", "<SEARCH_INDEX_NAME>", searchQuery);
    // Anda dapat menggunakan parameter columnsToGet untuk menentukan kolom yang ingin Anda kembalikan atau menentukan bahwa semua kolom dikembalikan. Jika Anda tidak menentukan parameter ini, hanya kolom kunci utama yang dikembalikan. 
    //SearchRequest.ColumnsToGet columnsToGet = new SearchRequest.ColumnsToGet();
    //columnsToGet.setReturnAll(true); // Tentukan bahwa semua kolom dikembalikan. 
    //columnsToGet.setColumns(Arrays.asList("ColName1","ColName2")); // Tentukan kolom yang ingin Anda kembalikan. 
    //searchRequest.setColumnsToGet(columnsToGet);

    SearchResponse resp = client.search(searchRequest);
    //System.out.println("TotalCount: " + resp.getTotalCount()); // Tampilkan jumlah total baris yang memenuhi kondisi kueri alih-alih jumlah baris yang dikembalikan. 
    System.out.println("Row: " + resp.getRows());
}

Aturan penagihan

Saat menggunakan indeks pencarian untuk mengkueri data, Anda akan dikenakan biaya untuk throughput baca yang dikonsumsi. Untuk informasi lebih lanjut, lihat Item yang dapat ditagih dari indeks pencarian.

FAQ

Referensi

  • Saat menggunakan indeks pencarian untuk mengkueri data, Anda dapat menggunakan metode kueri berikut: kueri tepat, kueri terms, kueri cocok semua, kueri cocok, kueri frasa cocok, kueri awalan, kueri rentang, kueri wildcard, kueri fuzzy, kueri Boolean, kueri geo, kueri nested, kueri vektor KNN, dan kueri exists. Pilih metode kueri sesuai kebutuhan bisnis Anda untuk mengkueri data dari berbagai dimensi.

    Anda dapat mengurutkan atau membagi halaman baris yang memenuhi kondisi kueri menggunakan fitur pengurutan dan paginasi. Untuk informasi lebih lanjut, lihat Lakukan pengurutan dan paginasi.

    Anda dapat menggunakan fitur collapse (distinct) untuk menciutkan set hasil berdasarkan kolom tertentu. Dengan cara ini, data dari jenis tertentu hanya muncul sekali dalam hasil kueri. Untuk informasi lebih lanjut, lihat Ciutkan (distinct).

  • Jika Anda ingin menganalisis data dalam tabel data, Anda dapat menggunakan fitur agregasi operasi Search atau menjalankan pernyataan SQL. Misalnya, Anda dapat memperoleh nilai minimum dan maksimum, jumlah, dan total baris. Untuk informasi lebih lanjut, lihat Agregasi dan Kueri SQL.

  • Jika Anda ingin 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.