ประการแรก คุณต้องติดตั้ง Elasticsearch บนเซิร์ฟเวอร์ของคุณหรือใช้ Elasticsearch บริการบนคลาวด์ เช่น Elastic Cloud ตรวจสอบให้แน่ใจว่าคุณได้ติดตั้ง Elasticsearch ปลั๊กอิน GeoPoint เวอร์ชันที่ใช้งานร่วมกันได้
ติดตั้งและกำหนดค่าปลั๊กอิน GeoPoint
Elasticsearch รองรับการค้นหาตำแหน่งทางภูมิศาสตร์ผ่านปลั๊กอิน GeoPoint ในการติดตั้งปลั๊กอินนี้ คุณสามารถใช้ Elasticsearch เครื่องมือการจัดการปลั๊กอิน
ตัวอย่างเช่น หากคุณใช้ Elasticsearch เวอร์ชัน 7.x คุณสามารถเรียกใช้คำสั่งต่อไปนี้เพื่อติดตั้งปลั๊กอิน GeoPoint:
bin/elasticsearch-plugin install ingest-geoip
หลังจากติดตั้งปลั๊กอิน GeoPoint คุณต้องกำหนดค่าดัชนีของคุณเพื่อใช้ประเภทข้อมูล "geo_point" สำหรับฟิลด์ที่จะเก็บข้อมูลตำแหน่งทางภูมิศาสตร์ ในการทำเช่นนี้ คุณสามารถแก้ไขการแม็ปของดัชนีที่มีอยู่หรือสร้างดัชนีใหม่ด้วยการแมปที่กำหนดค่าไว้
กำหนดฟิลด์ตำแหน่งทางภูมิศาสตร์ในการทำแผนที่
เพิ่มฟิลด์ตำแหน่งทางภูมิศาสตร์ลงในดัชนีของคุณและแก้ไขการแมปสำหรับฟิลด์นั้น ฟิลด์ตำแหน่งทางภูมิศาสตร์โดยทั่วไปจะใช้ประเภทข้อมูล "geo_point" การแมปจะกำหนดแอตทริบิวต์และตัวเลือกสำหรับฟิลด์ตำแหน่งทางภูมิศาสตร์ เช่น ความแม่นยำของพิกัด รูปแบบ และอื่นๆ
ตัวอย่าง:
PUT /my_locations_index
{
"mappings": {
"properties": {
"location": {
"type": "geo_point"
}
}
}
}
แก้ไขข้อมูล
เพิ่มข้อมูลตำแหน่งทางภูมิศาสตร์ในเอกสารของคุณ โดยทั่วไป ข้อมูลตำแหน่งทางภูมิศาสตร์จะแสดงเป็นคู่ longitude
และ latitude
พิกัด คุณสามารถรับข้อมูลนี้จากผู้ใช้โดยใช้ Google Maps API แหล่งข้อมูลตำแหน่งทางภูมิศาสตร์อื่นๆ
ตัวอย่าง:
PUT /my_locations_index/_doc/1
{
"name": "Ba Dinh Square",
"location": {
"lat": 21.03405,
"lon": 105.81507
}
}
ทำการค้นหาตำแหน่งทางภูมิศาสตร์
เมื่อคุณมีข้อมูลตำแหน่งทางภูมิศาสตร์ใน Elasticsearch ดัชนีของคุณแล้ว คุณสามารถดำเนินการค้นหาตำแหน่งทางภูมิศาสตร์เพื่อค้นหาเอกสารที่อยู่ใกล้กับตำแหน่งที่ตั้งเฉพาะหรือภายในช่วงทางภูมิศาสตร์ที่กำหนดได้ ในการค้นหาตำแหน่งทางภูมิศาสตร์ คุณสามารถใช้ Elasticsearch ข้อความค้นหาที่เกี่ยวข้องของ ' เช่น geo_distance, geo_bounding_box, geo_polygon เป็นต้น
ตัวอย่าง: ค้นหาสถานที่ใกล้พิกัด(21.03405, 105.81507) ภายในรัศมี 5 กม.
GET /my_locations_index/_search
{
"query": {
"geo_distance": {
"distance": "5km",
"location": {
"lat": 21.03405,
"lon": 105.81507
}
}
}
}
บูรณาการ Google Maps
หากคุณต้องการรวมเข้า Google Maps กับ Elasticsearch เพื่อรับข้อมูลตำแหน่งทางภูมิศาสตร์จากผู้ใช้ คุณสามารถใช้ Google Maps API เพื่อดึงพิกัดลองจิจูดและละติจูดตามที่อยู่หรือตำแหน่งที่ผู้ใช้เลือก จากนั้น คุณสามารถใช้ข้อมูลนี้เพื่อเพิ่มข้อมูลตำแหน่งทางภูมิศาสตร์ลงใน Elasticsearch ดัชนีของคุณและทำการค้นหาตำแหน่งทางภูมิศาสตร์ได้
โดยสรุป การผสานรวม Google Maps กับ Elasticsearch ช่วยให้คุณใช้ประโยชน์จากคุณสมบัติการค้นหาตำแหน่งทางภูมิศาสตร์ในข้อมูลของคุณ ทำให้สามารถค้นหาได้อย่างแม่นยำและมีประสิทธิภาพตามข้อมูลตำแหน่งทางภูมิศาสตร์