Denna artikel är en spegelartikel om maskinöversättning, klicka här för att hoppa till originalartikeln.

Utsikt: 15452|Svar: 0

[Källa] Java geolokaliseringsinformation i ElasticSearch (geo_point)

[Kopiera länk]
Publicerad på 2019-01-09 17:25:39 | | |
Kort introduktion

Vi vet att ES stödjer en mängd olika datatyper, och utöver våra vanliga grundläggande datatyper stödjer det även datatyper som registrerar platsinformation. Inom ES finns det två typer av data som registrerar geolokaliseringsinformation, nämligen geo_shap och geo_point, och jag kommer kort att presentera geo_point typer nedan
geo_point stöder flera metoder för dataöverföring:

Sträng
Position: lat + "," + lon

Array
Position: {"lat": ...,"lon": ...}

Syfte
Plats: [lon, lat]


Notera: Förmodligen har alla trampat på denna grop minst en gång == Geografiska koordinatpunkter är latitud först och longitud sist ("latitude, longitude") när de uttrycks som strängar, medan arrays representeras i motsatt form, med longitud först och latitud sist ([longitud, latitud]). Faktum är att inom Elasticesearch, oavsett om det är i form av en sträng eller en matris, kommer latitud först och longitud sist. Men i början, för att anpassa sig till formateringsspecifikationen i GeoJSON, justerades representationen av arrayformer. Detta förklaras på den officiella webbplatsen.
Det finns generellt följande frågekrav för geo_point typer

Avståndsfråga
Hitta punkter inom räckhåll från mittpunkten

Avståndsområdesfråga (föråldrad)
Att fråga punkter inom det angivna intervallet för mittpunkten tas bort från API:et i den nya versionen av ES, så jag kommer inte förklara det för mycket här
Avgränsningsfråga
Hitta punkter inom en rektangel bestående av en specificerad punkt

Polygonfråga
Hitta punkter i en polygon bestående av flera punkter

SearchSourceBuilder-fabriken som byggts för olika sökningar i Java är följande:


Trafik enligt följande:

Kod för kontrollerlagret är följande:

[1]. Hur man använder

Innan vi använder geo_point typer bör vi först explicit specificera fältet som geo_point typ via mapping när indexet skapas, enligt följande:


Ovan har vi skapat ett nytt index som heter restraunt, och i dess mappningsfil specificerar vi uttryckligen typen av "plats"-fält som "geo_point"

[2] Förbered data

Om Kibana har vi tagit fram följande data:


Vi har förberett 7 databitar ovan, och sedan behöver vi köra frågan för att se om vårt gränssnitt uppfyller våra behov.

[3] Undersökning

Frågeavstånd


De andra två frågorna är desamma som ovan.




Föregående:ElasticsearchParseException[fältet måste vara antingen [lat], [lon] eller [geohash]]
Nästa:Discuz installerar appen och säger "Data känns inte igen, vänligen returnera" som en lösning.
Friskrivning:
All programvara, programmeringsmaterial eller artiklar som publiceras av Code Farmer Network är endast för lärande- och forskningsändamål; Ovanstående innehåll får inte användas för kommersiella eller olagliga ändamål, annars kommer användarna att bära alla konsekvenser. Informationen på denna sida kommer från internet, och upphovsrättstvister har inget med denna sida att göra. Du måste helt radera ovanstående innehåll från din dator inom 24 timmar efter nedladdning. Om du gillar programmet, vänligen stöd äkta programvara, köp registrering och få bättre äkta tjänster. Om det finns något intrång, vänligen kontakta oss via e-post.

Mail To:help@itsvse.com