Ten eerste moet u op uw server installeren Elasticsearch of een cloudgebaseerde Elasticsearch service zoals Elastic Cloud gebruiken. Zorg ervoor dat u een compatibele versie van Elasticsearch met de GeoPoint-plug-in installeert.
Installeer en configureer de GeoPoint-plug-in
Elasticsearch ondersteunt zoeken naar geolocatie via de GeoPoint-plug-in. Om deze plug-in te installeren, kunt u de Elasticsearch plug-inbeheertool gebruiken.
Als u bijvoorbeeld versie 7.x gebruikt Elasticsearch, kunt u de volgende opdracht uitvoeren om de GeoPoint-plug-in te installeren:
bin/elasticsearch-plugin install ingest-geoip
Na het installeren van de GeoPoint-plug-in, moet u uw index configureren om het gegevenstype "geo_point" te gebruiken voor het veld dat de geolocatie-informatie zal bevatten. Om dit te doen, kunt u de mapping van een bestaande index bewerken of een nieuwe index maken met de geconfigureerde mapping.
Definieer het geolocatieveld in Mapping
Voeg het geolocatieveld toe aan uw index en bewerk de mapping voor dat veld. Het geolocatieveld gebruikt doorgaans het gegevenstype "geo_point". De mapping definieert de attributen en opties voor het geolocatieveld, zoals de precisie van de coördinaten, formaat en meer.
Voorbeeld:
PUT /my_locations_index
{
"mappings": {
"properties": {
"location": {
"type": "geo_point"
}
}
}
}
Gegevens bewerken
Voeg geolocatie-informatie toe aan uw documenten. Gewoonlijk wordt geolocatie-informatie weergegeven als een paar longitude
en latitude
coördinaten. U kunt deze informatie verkrijgen van gebruikers die de Google Maps API of andere geolocatiegegevensbronnen gebruiken.
Voorbeeld:
PUT /my_locations_index/_doc/1
{
"name": "Ba Dinh Square",
"location": {
"lat": 21.03405,
"lon": 105.81507
}
}
Voer Geolocation Search uit
Nu u geolocatiegegevens in uw Elasticsearch index heeft, kunt u zoekopdrachten voor geolocatie uitvoeren om documenten te vinden in de buurt van een specifieke locatie of binnen een bepaald geografisch bereik. Om een geolocatie-zoekopdracht uit te voeren, kunt u Elasticsearch de bijbehorende zoekopdrachten gebruiken, zoals geo_distance, geo_bounding_box, geo_polygon, enz.
Voorbeeld: Zoek locaties in de buurt van de coördinaten(21.03405, 105.81507) binnen een straal van 5 km.
GET /my_locations_index/_search
{
"query": {
"geo_distance": {
"distance": "5km",
"location": {
"lat": 21.03405,
"lon": 105.81507
}
}
}
}
Integreren Google Maps
Als u wilt integreren Google Maps met Elasticsearch om geolocatie-informatie van gebruikers te verkrijgen, kunt u de gebruiken Google Maps API om lengte- en breedtegraadcoördinaten op te halen op basis van een adres of een locatie die door gebruikers is geselecteerd. Vervolgens kunt u deze informatie gebruiken om geolocatiegegevens aan uw Elasticsearch index toe te voegen en zoekopdrachten voor geolocatie uit te voeren.
Kortom, door te integreren Google Maps met Elasticsearch kunt u gebruik maken van zoekfuncties voor geolocatie in uw gegevens, waardoor u nauwkeurig en efficiënt kunt zoeken op basis van geolocatie-informatie.