All Products
Search
Document Center

OpenSearch:Cari orang di sekitar

Last Updated:Jun 21, 2026

OpenSearch memungkinkan Anda mencari orang atau tempat terdekat. Panduan ini menjelaskan cara menggunakan koordinat lokasi untuk pencarian yang efisien serta mengurutkan hasil berdasarkan jarak.

Solusi

  1. Konfigurasikan bidang GEO_POINT dalam skema aplikasi Anda dan buat indeks spasial untuk mengambil hasil.

  2. Konfigurasikan Plugin pemrosesan data untuk bidang GEO_POINT.

  3. Pelajari sintaks pengujian pencarian dan cara menambahkan pengurutan.

Prosedur

1. Konfigurasikan skema aplikasi

Dalam skema aplikasi OpenSearch, tambahkan bidang lon dan lat bertipe DOUBLE untuk koordinat geografis. Selanjutnya, buat bidang GEO_POINT bernama company_lon_lat (nama bidang dapat disesuaikan). Di skema indeks, atur alat analisis untuk company_lon_lat menjadi Geographic Location Analyzer dan tambahkan sebagai bidang atribut. Di daftar bidang indeks, buat indeks bernama company_lng_lat, atur bidang yang disertakan menjadi company_lon_lat, lalu pilih Geographic Location Analyzer sebagai metode analisis. Di daftar bidang atribut skema aplikasi, temukan bidang company_lon_lat dan klik Add as Attribute Field untuk menambahkannya. Untuk detail proses pembuatan aplikasi, lihat panduan Quick start.

2. Konfigurasikan sumber data

Saat mengonfigurasi pemetaan bidang, gunakan Plugin pemrosesan data StringCatenateExtractor untuk bidang company_lon_lat. Plugin ini menggabungkan bidang bujur lon dan bidang lintang lat yang sudah ada, menyambungkan nilainya dengan spasi, lalu menuliskan hasilnya ke bidang target company_lon_lat.

Catatan: Anda dapat mengabaikan pemetaan untuk bidang target company_lon_lat.

Untuk informasi lebih lanjut tentang plugin tersebut, lihat Data processing plug-ins.

3. Uji pencarian

Contoh: query=name:'Alibaba' AND company_lon_lat:'circle(116.5806 39.99624, 1000)' Deskripsi: Kueri ini mencari dokumen perusahaan "Alibaba" yang berada dalam radius 1.000 meter (1 km) dari koordinat '116.5806 39.99624'. Sintaks: query=spatial_index:'circle(LON LAT,Radius)'

  • LON adalah bujur, LAT adalah lintang, dan radius adalah radius pencarian dalam meter. Untuk kinerja terbaik, gunakan radius maksimal 10 km; kinerja akan menurun signifikan di luar rentang ini.

  • Untuk informasi lebih lanjut tentang fitur dan sintaksnya, lihat range search.

4. Tambahkan ekspresi penyortiran halus

Untuk mengurutkan berdasarkan jarak, masukkan koordinat pengguna dalam parameter kvpairs: kvpairs=long_lat_in_query:'120.34256 30.56982'

Ekspresi penyortiran halusnya adalah:

-distance(company_lon_lat, long_lat_in_query)

Sintaks:

distance(location1, location2, outputname, defaultvalue)

Parameter:

  • location1: Nama bidang bertipe GEO_POINT.

  • location2: Nama bidang yang ditetapkan dalam klausa kvpairs string kueri. Nilainya harus dalam format LON LAT yang diperlukan oleh bidang GEO_POINT.

  • outputname: Opsional. Menentukan nama untuk jarak yang dihitung agar dikembalikan dalam hasil.

  • defaultvalue: Opsional. Menentukan jarak yang dikembalikan jika bidang location1 dalam dokumen tidak valid. Nilai default-nya adalah 100000 jika tidak ditentukan.

Catatan: Dalam contoh ini, long_lat_in_query harus ditetapkan dalam kvpairs. Contohnya: kvpairs=long_lat_in_query:120.34256 30.56982