For det første må du installere Elasticsearch på serveren din eller bruke en skybasert Elasticsearch tjeneste som Elastic Cloud. Sørg for at du installerer en kompatibel versjon av Elasticsearch med GeoPoint-plugin.
Installer og konfigurer GeoPoint-plugin
Elasticsearch støtter geolokaliseringssøk gjennom GeoPoint-plugin. For å installere denne plugin, kan du bruke Elasticsearch plugin-administrasjonsverktøyet.
Hvis du for eksempel bruker Elasticsearch versjon 7.x, kan du kjøre følgende kommando for å installere GeoPoint-plugin:
bin/elasticsearch-plugin install ingest-geoip
Etter å ha installert GeoPoint-plugin-modulen, må du konfigurere indeksen din til å bruke "geo_point"-datatypen for feltet som skal inneholde informasjon om geolokalisering. For å gjøre dette kan du enten redigere tilordningen av en eksisterende indeks eller opprette en ny indeks med den konfigurerte tilordningen.
Definer geolokaliseringsfeltet i kartlegging
Legg til geolokaliseringsfeltet i indeksen og rediger kartleggingen for det feltet. Geolokaliseringsfeltet bruker vanligvis datatypen "geo_point". Kartleggingen vil definere attributtene og alternativene for geolokaliseringsfeltet, for eksempel presisjonen til koordinatene, formatet og mer.
Eksempel:
PUT /my_locations_index
{
"mappings": {
"properties": {
"location": {
"type": "geo_point"
}
}
}
}
Rediger data
Legg til geolokaliseringsinformasjon i dokumentene dine. Vanligvis er geolokaliseringsinformasjon representert som et par av longitude
og latitude
koordinater. Du kan få denne informasjonen fra brukere ved å bruke Google Maps API eller andre geolokaliseringsdatakilder.
Eksempel:
PUT /my_locations_index/_doc/1
{
"name": "Ba Dinh Square",
"location": {
"lat": 21.03405,
"lon": 105.81507
}
}
Utfør Geolocation Search
Nå som du har geolokaliseringsdata i Elasticsearch indeksen din, kan du utføre geolokaliseringssøk for å finne dokumenter nær et bestemt sted eller innenfor et bestemt geografisk område. For å utføre et geolokaliseringssøk, kan du bruke Elasticsearch tilhørende søk som geo_distance, geo_bounding_box, geo_polygon, etc.
Eksempel: Finn steder i nærheten av koordinatene(21.03405, 105.81507) innenfor 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 å integrere Google Maps med Elasticsearch for å få geolokaliseringsinformasjon fra brukere, kan du bruke Google Maps API for å hente lengde- og breddegradskoordinater basert på en adresse eller en plassering valgt av brukere. Deretter kan du bruke denne informasjonen til å legge til geolokaliseringsdata i indeksen Elasticsearch og utføre geolokaliseringssøk.
Avslutningsvis lar integrering Google Maps med Elasticsearch deg utnytte geolokasjonssøkefunksjoner i dataene dine, noe som muliggjør nøyaktig og effektiv søk basert på geolokaliseringsinformasjon.