|
|
Publisert på 09.01.2019 17:25:39
|
|
|

Kort introduksjon
Vi vet at ES støtter et bredt spekter av datatyper, i tillegg til våre vanlige grunnleggende datatyper, støtter det også datatyper som registrerer posisjonsinformasjon. I ES finnes det to typer data som registrerer geolokasjonsinformasjon, nemlig geo_shap og geo_point, og jeg vil kort introdusere geo_point typene nedenfor geo_point støtter flere metoder for dataoverføring:
Streng Posisjon: breddegrad + "," + lon
Array Posisjon: {"lat": ...,"lon": ...}
Formål Sted: [lon, lat]
Merk: Sannsynligvis har alle tråkket på denne gropen minst én gang == Geografiske koordinatpunkter er breddegrad først og lengdegrad sist ("breddegrad, lengdegrad") når de uttrykkes som strenger, mens matriser representeres i motsatt form, med lengdegrad først og breddegrad sist ([lengdegrad, breddegrad]). Faktisk, innen Elasticesearch, enten det er i form av en streng eller et array, kommer breddegrad først og lengdegrad sist. Men i de tidlige dagene, for å tilpasse seg formatspesifikasjonen i GeoJSON, ble representasjonen av array-skjemaer justert. Dette forklares på den offisielle nettsiden. Det finnes vanligvis følgende spørringskrav for geo_point typer
Avstandsspørring Finn punkter innenfor rekkevidde fra midtpunktet
Avstandsområde-spørring (foreldet) Spørring av punkter innenfor det angitte området til senterpunktet fjernes fra API-et i den nye versjonen av ES, så jeg vil ikke forklare det for mye her
Avgrensingsspørring Finn punkter innenfor et rektangel bestående av et spesifisert punkt
Polygon-spørring Finn punkter i en polygon bestående av flere punkter
SearchSourceBuilder-fabrikken som er konstruert for ulike spørringer i Java er som følger:
Tjenesten som følger:
Kontrollerlagets kode er som følger:
[1]. Hvordan bruke
Før vi bruker geo_point typene, bør vi først eksplisitt spesifisere feltet som geo_point type via mapping når vi lager indeksen, som følger:
Ovenfor har vi opprettet en ny indeks kalt restraunt, og i kartleggingsfilen spesifiserer vi eksplisitt typen "lokasjon"-felt som "geo_point"
[2] Forbered noen data
På Kibana har vi utarbeidet følgende data:
Vi har forberedt 7 databiter ovenfor, og deretter må vi kjøre spørringen for å se om grensesnittet vårt oppfyller våre behov.
[3] Undersøkelse
Spørringsavstand
De to andre undersøkelsene er de samme som ovenfor.
|
Foregående:ElasticsearchParseException[felt må være enten [lat], [lon] eller [geohash]]Neste:Discuz installerer appen og sier «Data er ikke gjenkjent, vennligst returner»-løsning
|