Muligheter for geospatialt søk
Implementer geo-point- og geo-shape-mappinger for å utføre stedsbaserte søk, nærhetsspørringer og geospatiale aggregasjoner.
Muligheter for geospatialt søk er en gratis leksjon i Elasticsearch og systemer for fulltekstsøk på CoddyKit. Dette er leksjon 1 av 4. Du kan lese valgfritt 3 leksjoner fra denne læringsstien gratis i sin helhet – deretter låser CoddyKit PRO opp alle leksjoner, samt praktisk øving med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Den er en del av læringsløpet i Elasticsearch og systemer for fulltekstsøk, og fremdriften din synkroniseres mellom nettet og CoddyKit-appen. Kurset i Elasticsearch og systemer for fulltekstsøk inneholder totalt 4 leksjoner.
Stedsbevisst søk
Velkommen til geospatialt søk! Mange moderne applikasjoner er avhengige av stedsdata, fra å finne restauranter i nærheten til å spore leveringskjøretøy.
Elasticsearch tilbyr effektive funksjoner for å indeksere, søke i og analysere geografisk informasjon.
Feltet `geo_point`
Den vanligste måten å lagre én geografisk posisjon i Elasticsearch på er å bruke datatypen geo_point.
Den representerer et bestemt punkt på jorden ved hjelp av breddegrads- og lengdegradskoordinater.
- Breddegrad: Posisjon nord–sør (for eksempel 48.8584)
- Lengdegrad: Posisjon øst–vest (for eksempel 2.2945)
Tilordne `geo_point`-data
Før du indekserer dokumenter med stedsdata, må du definere et geo_point-felt i indeksmappingen. Dette forteller Elasticsearch hvordan koordinatene skal tolkes.
Prøv å sette opp en indeks med navnet places og et location-felt av typen geo_point:
curl -X PUT "localhost:9200/places?pretty" -H 'Content-Type: application/json' -d'
{
"mappings": {
"properties": {
"location": {
"type": "geo_point"
},
"name": {
"type": "text"
}
}
}
}'Legge til geotaggede dokumenter
Nå som places-indeksen er mappet, kan vi indeksere dokumenter som inneholder geo_point-data. location-feltet kan ta imot et objekt med egenskapene lat og lon.
Indekser plasseringen til Eiffeltårnet:
curl -X PUT "localhost:9200/places/_doc/1?pretty" -H 'Content-Type: application/json' -d'
{
"name": "Eiffel Tower",
"location": {
"lat": 48.8584,
"lon": 2.2945
}
}'Søke etter avstand: `geo_distance`
En av de vanligste geospatiale spørringene er å finne dokumenter innenfor en bestemt radius fra et sentralt punkt. Dette gjøres ved hjelp av spørringen geo_distance.
Du angir en avstand og referansepunktet, og Elasticsearch returnerer alle dokumenter som samsvarer.
Eksempel på `geo_distance`-spørring
La oss finne alle steder innenfor 5 kilometer fra koordinatene til Eiffeltårnet. Denne spørringen passer perfekt for funksjoner av typen «finn restauranter i nærheten».
Kjør denne spørringen:
curl -X GET "localhost:9200/places/_search?pretty" -H 'Content-Type: application/json' -d'
{
"query": {
"geo_distance": {
"distance": "5km",
"location": {
"lat": 48.8584,
"lon": 2.2945
}
}
}
}'Søk i avgrensende boks (`geo_bounding_box`)
En annen nyttig spørring er geo_bounding_box, som lar deg finne alle dokumenter der geo_point ligger innenfor et angitt rektangulært område.
Du definerer boksen ved å oppgi koordinatene top_left og bottom_right.
Eksempel på `geo_bounding_box`-spørring
Se for deg at du har en kartvisning og bare vil vise resultater innenfor det gjeldende skjermområdet. En geo_bounding_box-spørring er ideell i dette scenarioet.
Her er et eksempel på et søk i et lite område rundt Paris:
curl -X GET "localhost:9200/places/_search?pretty" -H 'Content-Type: application/json' -d'
{
"query": {
"geo_bounding_box": {
"location": {
"top_left": {
"lat": 49,
"lon": 2
},
"bottom_right": {
"lat": 48,
"lon": 3
}
}
}
}
}'Utover punkter: `geo_shape`
Mens geo_point passer godt for enkeltposisjoner, hva om du må representere komplekse geometriske former som grensen til en park, en elv eller omrisset av et land?
Til dette tilbyr Elasticsearch datatypen geo_shape, som støtter ulike GeoJSON-former, blant annet polygoner, linjer og multipunkter.
Tilordning og indeksering av `geo_shape`
For å bruke geo_shape må du først mappe feltet som geo_shape. Deretter kan du indeksere dokumenter med komplekse geometriske former, vanligvis i GeoJSON-format. Slik mapper og indekserer du et enkelt polygon som representerer et distrikt:
curl -X PUT "localhost:9200/regions?pretty" -H 'Content-Type: application/json' -d'
{
"mappings": {
"properties": {
"area": {
"type": "geo_shape"
},
"name": {
"type": "keyword"
}
}
}
}'
curl -X PUT "localhost:9200/regions/_doc/1?pretty" -H 'Content-Type: application/json' -d'
{
"name": "Paris District",
"area": {
"type": "polygon",
"coordinates": [
[
[2.2, 48.8],
[2.3, 48.8],
[2.3, 48.9],
[2.2, 48.9],
[2.2, 48.8]
]
]
}
}'Utfordring: geospatial spørring
Du vil finne alle restauranter som ligger innenfor grensene til en bestemt park. Grensene til parken er komplekse og utgjør ikke et enkelt rektangel.
Oppsummering av geospatialt søk
Du har utforsket Elasticsearch sine kraftige geospatiale funksjoner!
- Vi lærte om typen
geo_pointfor enkeltposisjoner (breddegrad, lengdegrad). - Vi brukte
geo_distancetil nærhetssøk oggeo_bounding_boxtil søk i rektangulære områder. - Vi introduserte også den avanserte typen
geo_shapefor komplekse geometriske former som polygoner.
Disse verktøyene er avgjørende for å bygge avanserte stedsbevisste applikasjoner.
Lær deg Elasticsearch og systemer for fulltekstsøk med en AI-veileder – gratis
Skriv og kjør ekte kode i nettleseren, få umiddelbar hjelp fra en AI-veileder som er tilgjengelig døgnet rundt, og fortsett der du slapp – på nettet eller i appen.
- Kurs
- 12
- Leksjoner
- 48
Ofte stilte spørsmål
Er leksjonen «Muligheter for geospatialt søk» gratis?
Ja – du kan lese valgfritt 3 av leksjonene i læringsstien Elasticsearch og systemer for fulltekstsøk, inkludert «Muligheter for geospatialt søk», gratis i sin helhet her på nettet. Deretter låser CoddyKit PRO opp alle leksjoner, samt interaktiv øving med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Kurset i Elasticsearch og systemer for fulltekstsøk inneholder totalt 4 leksjoner.
Hva lærer jeg i «Muligheter for geospatialt søk»?
Implementer geo-point- og geo-shape-mappinger for å utføre stedsbaserte søk, nærhetsspørringer og geospatiale aggregasjoner. Du øver på Elasticsearch og systemer for fulltekstsøk med praktisk kode som du kjører direkte i nettleseren, mens en AI-veileder som er tilgjengelig døgnet rundt, svarer på spørsmålene dine mens du jobber deg gjennom leksjonen.
Trenger jeg erfaring for å begynne med Elasticsearch og systemer for fulltekstsøk?
Ingen tidligere erfaring er nødvendig. Elasticsearch og systemer for fulltekstsøk på CoddyKit er lagt opp for både nybegynnere og viderekomne, så De kan begynne her eller helt fra start og lære i Deres eget tempo. Dette er leksjon 1 av 4.
Hvor lang tid tar leksjonen «Muligheter for geospatialt søk»?
De fleste CoddyKit-leksjoner tar omtrent 5–10 minutter. Hver leksjon er kort og interaktiv, slik at De gjør jevne fremskritt og kan fortsette akkurat der De slapp – både på nettet og i appen.
Kan jeg skrive og kjøre kode i denne Elasticsearch og systemer for fulltekstsøk-leksjonen?
Ja. Alle Elasticsearch og systemer for fulltekstsøk-leksjoner har en innebygd kodeeditor, slik at De kan skrive og kjøre ekte kode direkte i nettleseren og få umiddelbar tilbakemelding fra AI – uten lokal konfigurering.
Alle leksjonene i dette kurset
- Muligheter for geospatialt søk
- Håndtering av tidsseriedata
- Strategier for produksjonsdistribusjon
- Livssyklusstyring av indekser