Geospatiale søgefunktioner
Implementer geo-point- og geo-shape-mappings for at udføre positionsbaserede søgninger, nærhedsforespørgsler og geospatiale aggregationsforespørgsler.
Geospatiale søgefunktioner er en gratis Elasticsearch og systemer til fuldtekstsøgning-lektion på CoddyKit. Dette er lektion 1 af 4. Du kan læse alle 3 lektioner i dette læringsspor gratis i deres fulde længde — derefter låser CoddyKit PRO alle lektioner op samt praktiske øvelser med en indbygget kodeeditor og en AI-underviser døgnet rundt. Den er en del af læringsforløbet i Elasticsearch og systemer til fuldtekstsøgning, og dine fremskridt synkroniseres på tværs af nettet og CoddyKit-appen. Elasticsearch og systemer til fuldtekstsøgning-kurset indeholder 4 lektioner i alt.
Positionsbaseret søgning
Velkommen til geospatial søgning! Mange moderne applikationer er afhængige af positionsdata, lige fra at finde restauranter i nærheden til at spore leveringskøretøjer.
Elasticsearch har effektive funktioner til at indeksere, søge i og analysere geografiske oplysninger på en effektiv måde.
Feltet `geo_point`
Den mest almindelige måde at gemme en enkelt geografisk position i Elasticsearch på er at bruge datatypen geo_point.
Den repræsenterer et bestemt punkt på Jorden ved hjælp af koordinaterne for breddegrad og længdegrad.
- Breddegrad: Position nord-syd (f.eks. 48.8584)
- Længdegrad: Position øst-vest (f.eks. 2.2945)
Tilknytning af `geo_point`-data
Før du indekserer dokumenter med positionsdata, skal du definere et geo_point-felt i din indekstilnytning. Det fortæller Elasticsearch, hvordan koordinaterne skal fortolkes.
Prøv at oprette et indeks med navnet places med et location-felt af 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"
}
}
}
}'Tilføjelse af geotaggede dokumenter
Nu hvor vores places-indeks har en tilknytning, kan vi indeksere dokumenter, der indeholder geo_point-data. Feltet location kan modtage et objekt med egenskaberne lat og lon.
Indeksér Eiffeltårnets position:
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øgning efter afstand: `geo_distance`
En af de mest almindelige geospatiale forespørgsler er at finde dokumenter inden for en bestemt radius fra et centralt punkt. Det opnås ved hjælp af forespørgslen geo_distance.
Du angiver en afstand og referencepunktet, hvorefter Elasticsearch returnerer alle matchende dokumenter.
Eksempel på forespørgsel med `geo_distance`
Lad os finde alle steder inden for 5 kilometer fra Eiffeltårnets koordinater. Denne forespørgsel er perfekt til funktioner som »find restauranter i nærheden af mig«.
Kør denne forespørgsel:
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øgning i afgrænset område (`geo_bounding_box`)
En anden nyttig forespørgsel er geo_bounding_box, som giver dig mulighed for at finde alle dokumenter, hvis geo_point ligger inden for et angivet rektangulært område.
Du definerer området ved at angive koordinaterne for top_left og bottom_right.
Eksempel på forespørgsel med `geo_bounding_box`
Forestil dig, at du har en kortvisning og kun vil vise resultater inden for det aktuelle skærmområde. En geo_bounding_box-forespørgsel er ideel i dette scenarie.
Her er et eksempel på en søgning i et lille område omkring 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
}
}
}
}
}'Ud over punkter: `geo_shape`
Mens geo_point er velegnet til enkelte positioner, hvad gør du så, hvis du skal repræsentere komplekse geometriske former som en parkgrænse, en flod eller et lands omrids?
Til dette tilbyder Elasticsearch datatypen geo_shape, som understøtter forskellige GeoJSON-former (polygoner, linjer, multipunkter osv.).
Tilknytning og indeksering af `geo_shape`
For at bruge geo_shape skal du først tilknytte feltet som geo_shape. Derefter kan du indeksere dokumenter med komplekse geometriske former, typisk i GeoJSON-format. Sådan tilknytter og indekserer du en simpel polygon, der repræsenterer 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]
]
]
}
}'Udfordring: geospatial forespørgsel
Du vil finde alle restauranter, der ligger inden for grænserne af en bestemt park. Parkens grænser er komplekse og udgør ikke et simpelt rektangel.
Opsummering af geospatial søgning
Du har udforsket Elasticsearchs effektive geospatiale funktioner!
- Vi lærte om typen
geo_pointtil enkelte positioner (breddegrad, længdegrad). - Vi brugte
geo_distancetil nærhedssøgninger oggeo_bounding_boxtil søgninger i rektangulære områder. - Vi introducerede også den avancerede type
geo_shapetil komplekse geometriske former som polygoner.
Disse værktøjer er afgørende, når du bygger avancerede positionsbaserede applikationer.
Lær Elasticsearch og systemer til fuldtekstsøgning med en AI-underviser — gratis
Skriv og kør rigtig kode i din browser, få øjeblikkelig hjælp fra en AI-underviser døgnet rundt, og fortsæt, hvor du slap, på web eller i appen.
- Kurser
- 12
- Lektioner
- 48
Ofte stillede spørgsmål
Er lektionen “Geospatiale søgefunktioner” gratis?
Ja — alle 3 lektioner i læringssporet Elasticsearch og systemer til fuldtekstsøgning, inklusive “Geospatiale søgefunktioner”, kan læses gratis i deres fulde længde her på webstedet. Derefter låser CoddyKit PRO alle lektioner op samt interaktive øvelser med en indbygget kodeeditor og en AI-underviser døgnet rundt. Elasticsearch og systemer til fuldtekstsøgning-kurset indeholder 4 lektioner i alt.
Hvad lærer jeg i “Geospatiale søgefunktioner”?
Implementer geo-point- og geo-shape-mappings for at udføre positionsbaserede søgninger, nærhedsforespørgsler og geospatiale aggregationsforespørgsler. Du øver dig i Elasticsearch og systemer til fuldtekstsøgning med praktisk kode, som du kører direkte i browseren, og en AI-vejleder døgnet rundt besvarer dine spørgsmål, mens du arbejder dig gennem lektionen.
Skal jeg have erfaring for at begynde på Elasticsearch og systemer til fuldtekstsøgning?
Der kræves ingen tidligere erfaring. Elasticsearch og systemer til fuldtekstsøgning på CoddyKit er tilrettelagt for både begyndere og øvede, så du kan starte her eller fra begyndelsen og lære i dit eget tempo. Dette er lektion 1 af 4.
Hvor lang tid tager lektionen “Geospatiale søgefunktioner”?
De fleste CoddyKit-lektioner tager cirka 5–10 minutter. Hver lektion er kort og interaktiv, så du gør løbende fremskridt og kan fortsætte, hvor du slap – på både web og app.
Kan jeg skrive og køre kode i denne Elasticsearch og systemer til fuldtekstsøgning-lektion?
Ja. Alle Elasticsearch og systemer til fuldtekstsøgning-lektioner har en indbygget kodeeditor, så du kan skrive og køre rigtig kode direkte i din browser og få øjeblikkelig feedback fra AI – uden lokal opsætning.
Alle lektioner i dette kursus
- Geospatiale søgefunktioner
- Håndtering af tidsseriedata
- Strategier til produktionsudrulning
- Livscyklusstyring af indekser