Denne artikkelen er en speilartikkel om maskinoversettelse, vennligst klikk her for å hoppe til originalartikkelen.

Utsikt: 15452|Svare: 0

[Kilde] Java geolokasjonsinformasjon i ElasticSearch (geo_point)

[Kopier lenke]
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
Ansvarsfraskrivelse:
All programvare, programmeringsmateriell eller artikler publisert av Code Farmer Network er kun for lærings- og forskningsformål; Innholdet ovenfor skal ikke brukes til kommersielle eller ulovlige formål, ellers skal brukerne bære alle konsekvenser. Informasjonen på dette nettstedet kommer fra Internett, og opphavsrettstvister har ingenting med dette nettstedet å gjøre. Du må fullstendig slette innholdet ovenfor fra datamaskinen din innen 24 timer etter nedlasting. Hvis du liker programmet, vennligst støtt ekte programvare, kjøp registrering, og få bedre ekte tjenester. Hvis det foreligger noen krenkelse, vennligst kontakt oss på e-post.

Mail To:help@itsvse.com