For det første skal du installere Elasticsearch på din server eller bruge en cloud-baseret Elasticsearch tjeneste som Elastic Cloud. Sørg for at installere en kompatibel version af Elasticsearch med GeoPoint plugin.
Installer og konfigurer GeoPoint-plugin'et
Elasticsearch understøtter geolokationssøgning gennem GeoPoint plugin. For at installere dette plugin kan du bruge Elasticsearch plugin-administrationsværktøjet.
For eksempel, hvis du bruger Elasticsearch version 7.x, kan du køre følgende kommando for at installere GeoPoint-pluginnet:
bin/elasticsearch-plugin install ingest-geoip
Efter installation af GeoPoint-pluginnet, skal du konfigurere dit indeks til at bruge "geo_point"-datatypen for det felt, der skal indeholde geolokationsoplysningerne. For at gøre dette kan du enten redigere tilknytningen af et eksisterende indeks eller oprette et nyt indeks med den konfigurerede tilknytning.
Definer Geolocation-feltet i Mapping
Tilføj geolocation-feltet til dit indeks, og rediger kortlægningen for det felt. Geolocation-feltet bruger typisk datatypen "geo_point". Kortlægningen vil definere attributterne og mulighederne for geolokationsfeltet, såsom præcisionen af koordinaterne, formatet og mere.
Eksempel:
PUT /my_locations_index
{
"mappings": {
"properties": {
"location": {
"type": "geo_point"
}
}
}
}
Rediger data
Tilføj geolokationsoplysninger til dine dokumenter. Typisk er geolokationsoplysninger repræsenteret som et par af longitude
og latitude
koordinater. Du kan få disse oplysninger fra brugere ved hjælp af Google Maps API eller andre geolokaliseringsdatakilder.
Eksempel:
PUT /my_locations_index/_doc/1
{
"name": "Ba Dinh Square",
"location": {
"lat": 21.03405,
"lon": 105.81507
}
}
Udfør Geolocation Search
Nu hvor du har geolocation-data i dit Elasticsearch indeks, kan du udføre geolocation-søgeforespørgsler for at finde dokumenter i nærheden af et bestemt sted eller inden for et bestemt geografisk område. For at udføre en geolokationssøgning kan du bruge Elasticsearch 's tilsvarende forespørgsler som geo_distance, geo_bounding_box, geo_polygon osv.
Eksempel: Find steder i nærheden af koordinaterne(21.03405, 105.81507) inden for en radius på 5 km.
GET /my_locations_index/_search
{
"query": {
"geo_distance": {
"distance": "5km",
"location": {
"lat": 21.03405,
"lon": 105.81507
}
}
}
}
Integrere Google Maps
Hvis du ønsker at integrere Google Maps med Elasticsearch for at indhente geolokationsoplysninger fra brugere, kan du bruge Google Maps API til at hente længde- og breddegradskoordinater baseret på en adresse eller en lokation valgt af brugerne. Derefter kan du bruge disse oplysninger til at tilføje geolokationsdata til dit Elasticsearch indeks og udføre geolocation-søgeforespørgsler.
Afslutningsvis giver integration Google Maps med Elasticsearch dig mulighed for at udnytte geolocation søgefunktioner i dine data, hvilket muliggør nøjagtig og effektiv søgning baseret på geolocation information.