Úvod do vyhledávání geolokací v Elasticsearch

Nejprve musíte nainstalovat Elasticsearch na svůj server nebo použít cloudovou Elasticsearch službu, jako je Elastic Cloud. Ujistěte se, že jste nainstalovali kompatibilní verzi Elasticsearch s pluginem GeoPoint.

 

Nainstalujte a nakonfigurujte plugin GeoPoint

Elasticsearch podporuje geolokační vyhledávání prostřednictvím pluginu GeoPoint. Chcete-li nainstalovat tento plugin, můžete použít Elasticsearch nástroj pro správu pluginu.

Pokud například používáte Elasticsearch verzi 7.x, můžete spustit následující příkaz a nainstalovat plugin GeoPoint:

bin/elasticsearch-plugin install ingest-geoip

Po instalaci pluginu GeoPoint musíte nakonfigurovat svůj index tak, aby používal datový typ „geo_point“ pro pole, které bude obsahovat informace o geolokaci. Chcete-li to provést, můžete buď upravit mapování existujícího indexu, nebo vytvořit nový index s nakonfigurovaným mapováním.

 

Definujte pole geolokace v mapování

Přidejte pole geolokace do indexu a upravte mapování pro toto pole. Pole geolokace obvykle používá datový typ „geo_point“. Mapování bude definovat atributy a možnosti pro pole geolokace, jako je přesnost souřadnic, formát a další.

Příklad:

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

 

Upravit data

Přidejte do dokumentů informace o geolokaci. Geolokační informace jsou obvykle reprezentovány jako dvojice longitude a latitude souřadnice. Tyto informace můžete získat od uživatelů pomocí Google Maps API nebo jiných zdrojů geolokačních dat.

Příklad:

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

 

Proveďte vyhledávání geolokace

Nyní, když máte ve svém Elasticsearch indexu geolokační data, můžete provádět geolokační vyhledávací dotazy, abyste našli dokumenty v blízkosti konkrétního místa nebo v určitém geografickém rozsahu. Chcete-li provést geolokační vyhledávání, můžete použít Elasticsearch odpovídající dotazy jako geo_distance, geo_bounding_box, geo_polygon atd.

Příklad: Najděte místa poblíž souřadnic(21.03405, 105.81507) v okruhu 5 km.

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

 

Integrovat Google Maps

Pokud se chcete integrovat Google Maps s a Elasticsearch získat od uživatelů geolokační informace, můžete použít Google Maps API k načtení souřadnic zeměpisné délky a šířky na základě adresy nebo umístění vybraného uživateli. Tyto informace pak můžete použít k přidání geolokačních dat do Elasticsearch indexu a provádění vyhledávacích dotazů geolokace.

Závěrem lze říci, že integrace Google Maps s Elasticsearch vám umožňuje využívat funkce vyhledávání geolokace ve vašich datech, což umožňuje přesné a efektivní vyhledávání na základě informací o geolokaci.