Möjligheter för geospatial sökning
Implementera mappningar för geo-punkter och geo-former för att utföra platsbaserade sökningar, närhetsfrågor och geospatiala aggregeringar.
Möjligheter för geospatial sökning är en gratis lektion i Elasticsearch och system för fulltextsökning på CoddyKit. Detta är lektion 1 av 4. Du kan läsa vilka 3 lektioner som helst i den här lärvägen kostnadsfritt i sin helhet – därefter låser CoddyKit PRO upp alla lektioner, plus praktisk övning med en inbyggd kodredigerare och en AI-lärare dygnet runt. Den ingår i lärvägen för Elasticsearch och system för fulltextsökning, och Era framsteg synkroniseras mellan webben och CoddyKit-appen. Kursen i Elasticsearch och system för fulltextsökning innehåller totalt 4 lektioner.
Platsmedveten sökning
Välkommen till geospatial sökning! Många moderna applikationer använder platsdata, från att hitta närliggande restauranger till att spåra leveransfordon.
Elasticsearch tillhandahåller kraftfulla funktioner för att effektivt indexera, söka i och analysera geografisk information.
Fältet `geo_point`
Det vanligaste sättet att lagra en enskild geografisk plats i Elasticsearch är att använda datatypen geo_point.
Den representerar en specifik punkt på jorden med hjälp av koordinater för latitud och longitud.
- Latitud: Position i nord-sydlig riktning (till exempel 48.8584)
- Longitud: Position i öst-västlig riktning (till exempel 2.2945)
Mappa `geo_point`-data
Innan du indexerar dokument med platsdata behöver du definiera ett fält av typen geo_point i indexets mapping. Då anger du för Elasticsearch hur koordinaterna ska tolkas.
Prova att konfigurera ett index med namnet places och ett location-fält 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"
}
}
}
}'Lägga till geotaggade dokument
Nu när vårt places-index har en mapping kan vi indexera dokument som innehåller geo_point-data. Fältet location kan ta emot ett objekt med egenskaperna lat och lon.
Indexera Eiffeltornets plats:
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öka efter avstånd: `geo_distance`
En av de vanligaste geospatiala frågorna är att hitta dokument inom en viss radie från en central punkt. Detta görs med frågan geo_distance.
Du anger ett avstånd och referenspunkten, så returnerar Elasticsearch alla matchande dokument.
Exempel på frågan `geo_distance`
Nu hittar vi alla platser inom 5 kilometer från Eiffeltornets koordinater. Den här frågan passar perfekt för funktioner av typen ”hitta restauranger nära mig”.
Kör den här frågan:
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ökning med begränsningsruta (`geo_bounding_box`)
En annan användbar fråga är geo_bounding_box, som låter dig hitta alla dokument vars geo_point ligger inom ett angivet rektangulärt område.
Du definierar rutan genom att ange koordinaterna för top_left och bottom_right.
Exempel på frågan `geo_bounding_box`
Föreställ dig att du har en kartvy och bara vill visa resultat inom det aktuella skärmområdet. En fråga med geo_bounding_box passar perfekt i detta scenario.
Här är ett exempel som söker inom ett litet område runt 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
}
}
}
}
}'Bortom punkter: `geo_shape`
geo_point passar bra för enskilda platser, men vad gör du om du behöver representera komplexa geometrier som gränsen för en park, en flod eller ett lands kontur?
För detta erbjuder Elasticsearch datatypen geo_shape, som stöder olika GeoJSON-former, till exempel polygoner, linjer och multipunkter.
Mappa och indexera `geo_shape`
För att använda geo_shape mappar du först fältet som geo_shape. Därefter kan du indexera dokument med komplexa geometrier, vanligtvis i GeoJSON-format. Så här mappar och indexerar du en enkel polygon som representerar ett 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]
]
]
}
}'Utmaning: geospatial fråga
Du vill hitta alla restauranger som ligger inom gränserna för en viss park. Parkens gränser är komplexa och utgör inte en enkel rektangel.
Repetition: geospatial sökning
Du har utforskat Elasticsearchs kraftfulla geospatiala funktioner!
- Vi lärde oss om typen
geo_pointför enskilda platser (latitud, longitud). - Vi använde
geo_distanceför närhetssökningar ochgeo_bounding_boxför sökningar i rektangulära områden. - Vi introducerade också den avancerade typen
geo_shapeför komplexa geometrier som polygoner.
Dessa verktyg är viktiga när du bygger avancerade platsmedvetna applikationer.
Lär dig Elasticsearch och system för fulltextsökning med en AI-lärare – gratis
Skriv och kör riktig kod i webbläsaren, få omedelbar hjälp av en AI-lärare dygnet runt och fortsätt där du slutade – på webben eller i appen.
- Kurser
- 12
- Lektioner
- 48
Vanliga frågor
Är lektionen ”Möjligheter för geospatial sökning” gratis?
Ja – du kan läsa vilka 3 lektioner som helst i lärvägen Elasticsearch och system för fulltextsökning, inklusive ”Möjligheter för geospatial sökning”, kostnadsfritt i sin helhet här på webben. Därefter låser CoddyKit PRO upp alla lektioner, plus interaktiv övning med en inbyggd kodredigerare och en AI-lärare dygnet runt. Kursen i Elasticsearch och system för fulltextsökning innehåller totalt 4 lektioner.
Vad lär jag mig i ”Möjligheter för geospatial sökning”?
Implementera mappningar för geo-punkter och geo-former för att utföra platsbaserade sökningar, närhetsfrågor och geospatiala aggregeringar. Ni övar på Elasticsearch och system för fulltextsökning med praktisk kod som körs direkt i webbläsaren, medan en AI-handledare som är tillgänglig dygnet runt svarar på Era frågor under lektionen.
Behöver jag någon erfarenhet för att börja lära mig Elasticsearch och system för fulltextsökning?
Du behöver inga förkunskaper. Utbildningen i Elasticsearch och system för fulltextsökning på CoddyKit är upplagd för allt från nybörjare till avancerade elever, så att du kan börja här eller från början och gå fram i din egen takt. Detta är lektion 1 av 4.
Hur lång tid tar lektionen ”Möjligheter för geospatial sökning”?
De flesta CoddyKit-lektioner tar cirka 5–10 minuter. Varje lektion är kort och interaktiv, så att du gör stadiga framsteg och kan fortsätta precis där du slutade – på webben eller i appen.
Kan jag skriva och köra kod i den här Elasticsearch och system för fulltextsökning-lektionen?
Ja. Varje Elasticsearch och system för fulltextsökning-lektion innehåller en inbyggd kodredigerare, så att du kan skriva och köra riktig kod direkt i webbläsaren och få omedelbar AI-feedback – utan lokal installation.
Alla lektioner i den här kursen
- Möjligheter för geospatial sökning
- Hantering av tidsseriedata
- Strategier för produktionsdriftsättning
- Hantering av indexlivscykeln