|
|
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.
|