Acest articol este un articol oglindă al traducerii automate, vă rugăm să faceți clic aici pentru a sări la articolul original.

Vedere: 15452|Răspunde: 0

[Sursă] Informații despre geolocalizarea Java în ElasticSearch (geo_point)

[Copiază linkul]
Postat pe 09.01.2019 17:25:39 | | |
Scurtă introducere

Știm că ES suportă o gamă largă de tipuri de date, pe lângă tipurile noastre comune de date de bază, suportă și tipuri de date care înregistrează informații despre locație. În ES, există două tipuri de date care înregistrează informații de geolocalizare, și anume geo_shap și geo_point, iar mai jos voi prezenta pe scurt tipurile geo_point
geo_point suportă multiple metode de transfer de date:

Șirul
Poziție: lat + "," + lon

Array
Poziție: {"lat": ...,"lon": ...}

Obiectiv
Locație: [lon, lat]


Notă: Probabil toată lumea a pășit pe această groapă cel puțin o dată == Punctele de coordonate geografice sunt latitudinea mai întâi și longitudinea ultimă ("latitudine, longitudine") când sunt exprimate ca șiruri de șnururi, în timp ce tablourile sunt reprezentate în formă opusă, cu longitudinea mai întâi și latitudinea ultimul ([longitudine, latitudine]). De fapt, în cadrul Elasticesearch, fie că este sub formă de coardă sau de matrice, latitudinea vine prima, iar longitudinea la final. Totuși, în primele zile, pentru a se adapta la specificația de formatare a GeoJSON, reprezentarea formelor de tip array a fost ajustată. Acest lucru este explicat pe site-ul oficial.
În general, există următoarele cerințe de interogare pentru tipurile de geo_point

Interogare la distanță
Găsiți puncte aflate în raza de acțiune față de punctul central

Interogare distanță (deprevăzută)
Interogarea punctelor în intervalul specificat al punctului central este eliminată din API în noua versiune de ES, așa că nu voi explica prea mult aici
Interogare de delimitare
Găsește puncte într-un dreptunghi format dintr-un punct specificat

Interogare poligonală
Găsește puncte într-un poligon format din mai multe puncte

Fabrica SearchSourceBuilder construită pentru diferite interogări în Java este următoarea:


Serviciul este următorul:

Codul la nivelul controlerului este următorul:

[1]. Cum să folosești

Înainte de a folosi geo_point tipuri, ar trebui mai întâi să specificăm explicit câmpul ca tipul geo_point prin mapare atunci când creăm indexul, după cum urmează:


Mai sus am creat un nou index numit restraunt, iar în fișierul său de mapare specificăm explicit tipul câmpului "locație" ca "geo_point"

[2] Pregătește niște date

Despre Kibana am pregătit următoarele date:


Am pregătit 7 date de mai sus, apoi trebuie să executăm interogarea pentru a vedea dacă interfața noastră corespunde nevoilor noastre.

[3] Anchetă

Distanța de interogare


Celelalte două întrebări sunt aceleași ca cele de mai sus.




Precedent:ElasticsearchParseException[câmpul trebuie să fie fie [lat], [lon] sau [geohash]]
Următor:Discuz instalează aplicația și spune "Datele nu sunt recunoscute, vă rugăm să returnați" soluție alternativă
Disclaimer:
Tot software-ul, materialele de programare sau articolele publicate de Code Farmer Network sunt destinate exclusiv scopurilor de învățare și cercetare; Conținutul de mai sus nu va fi folosit în scopuri comerciale sau ilegale, altfel utilizatorii vor suporta toate consecințele. Informațiile de pe acest site provin de pe Internet, iar disputele privind drepturile de autor nu au legătură cu acest site. Trebuie să ștergi complet conținutul de mai sus de pe calculatorul tău în termen de 24 de ore de la descărcare. Dacă îți place programul, te rugăm să susții software-ul autentic, să cumperi înregistrarea și să primești servicii autentice mai bune. Dacă există vreo încălcare, vă rugăm să ne contactați prin e-mail.

Mail To:help@itsvse.com