Denne artikel er en spejling af maskinoversættelse, klik venligst her for at springe til den oprindelige artikel.

Udsigt: 15452|Svar: 0

[Kilde] Java Geolokationsinformation i ElasticSearch (geo_point)

[Kopier link]
Opslået på 09/01/2019 17.25.39 | | |
Kort introduktion

Vi ved, at ES understøtter en bred vifte af datatyper, og ud over vores almindelige grundlæggende datatyper understøtter det også datatyper, der registrerer lokalitetsinformation. I ES findes der to typer data, der registrerer geolokationsinformation, nemlig geo_shap og geo_point, og jeg vil kort introducere geo_point typer nedenfor
geo_point understøtter flere dataoverførselsmetoder:

Streng
Position: breddegrad + "," + lon

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

Formål
Sted: [lon, lat]


Bemærk: Sandsynligvis har alle trådt på dette hul mindst én gang == Geografiske koordinatpunkter er breddegrad først og længdegrad sidst ("breddegrad, længdegrad"), når de udtrykkes som strenge, mens arrays repræsenteres i modsat form, med længdegrad først og breddegrad sidst ([længdegrad, breddegrad]). Faktisk kommer breddegrad først og længdegrad i Elasticesearch, uanset om det er i form af en streng eller et array. Men i de tidlige dage blev repræsentationen af array-formularer justeret for at tilpasse sig formateringsspecifikationen i GeoJSON. Dette forklares på den officielle hjemmeside.
Der er generelt følgende forespørgselskrav for geo_point typer

Afstandsforespørgsel
Find punkter inden for rækkevidde fra midtpunktet

Afstandsområdeforespørgsel (forældet)
Forespørgsler på punkter inden for det angivne område for centerpunktet fjernes fra API'et i den nye version af ES, så jeg vil ikke forklare det for meget her
Afgrænsningsforespørgsel
Find punkter inden for et rektangel bestående af et specificeret punkt

Polygonforespørgsel
Find punkter i en polygon bestående af flere punkter

SearchSourceBuilder-fabrikken, der er konstrueret til forskellige forespørgsler i Java, er som følger:


Betjening som følger:

Controller-lagets kode er som følger:

[1]. Sådan bruges

Før vi bruger geo_point typer, bør vi først eksplicit specificere feltet som geo_point type via mapping ved oprettelse af indekset, som følger:


Ovenfor har vi oprettet et nyt indeks kaldet restraunt, og i dets mappingfil specificerer vi eksplicit typen af "lokation"-felt som "geo_point"

[2] Forbered nogle data

Om Kibana har vi udarbejdet følgende data:


Vi har forberedt 7 datastykker ovenfor, og derefter skal vi udføre forespørgslen for at se, om vores interface opfylder vores behov.

[3] Forespørgsel

Forespørgselsafstand


De to andre forespørgsler er de samme som ovenfor.




Tidligere:ElasticsearchParseException[felt skal være enten [lat], [lon] eller [geohash]]
Næste:Discuz installerer appen og siger "Data genkendes ikke, returner venligst" som en løsning.
Ansvarsfraskrivelse:
Al software, programmeringsmaterialer eller artikler udgivet af Code Farmer Network er kun til lærings- og forskningsformål; Ovenstående indhold må ikke bruges til kommercielle eller ulovlige formål, ellers skal brugerne bære alle konsekvenser. Oplysningerne på dette site kommer fra internettet, og ophavsretstvister har intet med dette site at gøre. Du skal slette ovenstående indhold fuldstændigt fra din computer inden for 24 timer efter download. Hvis du kan lide programmet, så understøt venligst ægte software, køb registrering og få bedre ægte tjenester. Hvis der er nogen overtrædelse, bedes du kontakte os via e-mail.

Mail To:help@itsvse.com