Elasticsearch og systemer for fulltekstsøk · leksjon

Muligheter for geospatialt søk

Implementer geo-point- og geo-shape-mappinger for å utføre stedsbaserte søk, nærhetsspørringer og geospatiale aggregasjoner.

Leksjon 1 av 412 trinn

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_point for enkeltposisjoner (breddegrad, lengdegrad).
  • Vi brukte geo_distance til nærhetssøk og geo_bounding_box til søk i rektangulære områder.
  • Vi introduserte også den avanserte typen geo_shape for komplekse geometriske former som polygoner.

Disse verktøyene er avgjørende for å bygge avanserte stedsbevisste applikasjoner.

Gratis å komme i gang

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

  1. Muligheter for geospatialt søk
  2. Håndtering av tidsseriedata
  3. Strategier for produksjonsdistribusjon
  4. Livssyklusstyring av indekser
← Tilbake til Elasticsearch og systemer for fulltekstsøk