გეოლოკაციის ძიებაში შესავალი 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 's შესაბამისი მოთხოვნები, როგორიცაა 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 გაძლევთ გამოიყენოთ გეოლოკაციის ძიების ფუნქციები თქვენს მონაცემებში, რაც საშუალებას გაძლევთ გეოლოკაციის ინფორმაციის საფუძველზე ზუსტი და ეფექტური ძიება.