รู้เบื้องต้นเกี่ยวกับการค้นหาตำแหน่งทางภูมิศาสตร์ใน Elasticsearch

ประการแรก คุณต้องติดตั้ง 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 ช่วยให้คุณใช้ประโยชน์จากคุณสมบัติการค้นหาตำแหน่งทางภูมิศาสตร์ในข้อมูลของคุณ ทำให้สามารถค้นหาได้อย่างแม่นยำและมีประสิทธิภาพตามข้อมูลตำแหน่งทางภูมิศาสตร์