Pengenalan kepada Carian Geolokasi dalam Elasticsearch

Pertama, anda perlu memasang Elasticsearch pada pelayan anda atau menggunakan perkhidmatan berasaskan awan Elasticsearch seperti Elastic Cloud. Pastikan anda memasang versi yang serasi Elasticsearch dengan pemalam GeoPoint.

 

Pasang dan Konfigurasikan Pemalam GeoPoint

Elasticsearch menyokong carian geolokasi melalui pemalam GeoPoint. Untuk memasang pemalam ini, anda boleh menggunakan Elasticsearch alat pengurusan pemalam.

Sebagai contoh, jika anda menggunakan Elasticsearch versi 7.x, anda boleh menjalankan arahan berikut untuk memasang pemalam GeoPoint:

bin/elasticsearch-plugin install ingest-geoip

Selepas memasang pemalam GeoPoint, anda perlu mengkonfigurasi indeks anda untuk menggunakan jenis data "geo_point" untuk medan yang akan menyimpan maklumat geolokasi. Untuk melakukan ini, anda boleh sama ada mengedit pemetaan indeks sedia ada atau mencipta indeks baharu dengan pemetaan yang dikonfigurasikan.

 

Tentukan Medan Geolokasi dalam Pemetaan

Tambahkan medan geolokasi pada indeks anda dan edit pemetaan untuk medan itu. Medan geolokasi biasanya menggunakan jenis data "geo_point". Pemetaan akan menentukan atribut dan pilihan untuk medan geolokasi, seperti ketepatan koordinat, format dan banyak lagi.

Contoh:

PUT /my_locations_index  
{  
  "mappings": {  
    "properties": {  
      "location": {  
        "type": "geo_point"  
      }  
    }  
  }  
}  

 

Edit Data

Tambahkan maklumat geolokasi pada dokumen anda. Biasanya, maklumat geolokasi diwakili sebagai sepasang longitude dan latitude koordinat. Anda boleh mendapatkan maklumat ini daripada pengguna menggunakan Google Maps API atau sumber data geolokasi lain.

Contoh:

PUT /my_locations_index/_doc/1  
{  
  "name": "Ba Dinh Square",  
  "location": {  
    "lat": 21.03405,  
    "lon": 105.81507  
  }  
}  

 

Lakukan Carian Geolokasi

Memandangkan anda mempunyai data geolokasi dalam Elasticsearch indeks anda, anda boleh melakukan pertanyaan carian geolokasi untuk mencari dokumen berhampiran lokasi tertentu atau dalam julat geografi tertentu. Untuk melakukan carian geolokasi, anda boleh menggunakan Elasticsearch pertanyaan yang sepadan seperti geo_distance, geo_bounding_box, geo_polygon, dsb.

Contoh: Cari lokasi berhampiran koordinat(21.03405, 105.81507) dalam radius 5km.

GET /my_locations_index/_search  
{  
  "query": {  
    "geo_distance": {  
      "distance": "5km",  
      "location": {  
        "lat": 21.03405,  
        "lon": 105.81507  
      }  
    }  
  }  
}  

 

sepadukan Google Maps

Jika anda ingin menyepadukan Google Maps untuk Elasticsearch mendapatkan maklumat geolokasi daripada pengguna, anda boleh menggunakan Google Maps API untuk mendapatkan koordinat longitud dan latitud berdasarkan alamat atau lokasi yang dipilih oleh pengguna. Kemudian, anda boleh menggunakan maklumat ini untuk menambah data geolokasi pada Elasticsearch indeks anda dan melakukan pertanyaan carian geolokasi.

Kesimpulannya, penyepaduan Google Maps dengan Elasticsearch membolehkan anda memanfaatkan ciri carian geolokasi dalam data anda, membolehkan carian yang tepat dan cekap berdasarkan maklumat geolokasi.