Ta članek je zrcalni članek strojnega prevajanja, kliknite tukaj za skok na izvirni članek.

Pogled: 15452|Odgovoriti: 0

[Vir] Java geolokacijske informacije v ElasticSearch (geo_point)

[Kopiraj povezavo]
Objavljeno na 9. 01. 2019 17:25:39 | | |
Kratek uvod

Vemo, da ES podpira širok nabor vrst podatkov, poleg naših osnovnih podatkovnih tipov podpira tudi podatkovne tipe, ki beležijo podatke o lokaciji. V ES obstajata dve vrsti podatkov, ki beležita geolokacijske informacije, in sicer geo_shap in geo_point, spodaj pa bom na kratko predstavil geo_point vrste
geo_point podpira več metod prenosa podatkov:

Struna
Položaj: lat + "," + lon

Array
Položaj: {"lat": ...,"lon": ...}

Namen
Lokacija: [dolžina, širina]


Opomba: Verjetno je vsak že stopil na to jamo vsaj enkrat == Geografske koordinatne točke so najprej širina in dolžina zadnja ("zemljepisna širina, dolžina"), ko so izražene kot nizi, medtem ko so polja predstavljena v nasprotni obliki, z dolžino najprej in širino zadnjo ([dolžina, širina]). Pravzaprav je v Elasticesearchu, ne glede na to, ali je v obliki niza ali matrike, najprej zemljepisna širina, dolžina pa zadnja. Vendar pa so v zgodnjih dneh, da bi se prilagodili specifikacijam oblikovanja GeoJSON, prilagodili predstavitev oblik polj. To je pojasnjeno na uradni spletni strani.
Za geo_point vrste poizvedb so običajno naslednje zahteve

Poizvedba o razdalji
Najdi točke znotraj dosega od središčne točke

Poizvedba o razdalji (zastarela)
Poizvedovanje točk znotraj določenega območja središčne točke je v novi različici ES odstranjeno iz API-ja, zato tega tukaj ne bom preveč razlagal
Omejevalna poizvedba
Najdi točke znotraj pravokotnika, ki je sestavljen iz določene točke

Poizvedba po poligonu
Najdi točke v poligonu, sestavljenem iz več točk

Tovarna SearchSourceBuilder, zgrajena za različne poizvedbe v Javi, je naslednja:


Storitev je naslednja:

Koda na ravni krmilnika je naslednja:

[1]. Kako uporabljati

Preden uporabimo geo_point tipe, moramo najprej eksplicitno določiti polje kot geo_point tip s preslikavo ob ustvarjanju indeksa, kot sledi:


Zgoraj smo ustvarili nov indeks z imenom restraunt, v njegovi mapirni datoteki pa izrecno določimo vrsto polja "location" kot "geo_point".

[2] Pripravi nekaj podatkov

O Kibani smo pripravili naslednje podatke:


Pripravili smo 7 podatkov zgoraj, nato pa moramo izvesti poizvedbo, da preverimo, ali naš vmesnik ustreza našim potrebam.

[3] Preiskava

Razdalja poizvedb


Drugi dve poizvedbi sta enaki kot zgoraj.




Prejšnji:ElasticsearchParseException[polje mora biti bodisi [lat], [lon] ali [geohash]]
Naslednji:Discuz namesti aplikacijo in reče "Podatki niso prepoznani, prosimo, vrni"
Disclaimer:
Vsa programska oprema, programski materiali ali članki, ki jih izdaja Code Farmer Network, so namenjeni zgolj učnim in raziskovalnim namenom; Zgornja vsebina ne sme biti uporabljena v komercialne ali nezakonite namene, sicer uporabniki nosijo vse posledice. Informacije na tej strani prihajajo z interneta, spori glede avtorskih pravic pa nimajo nobene zveze s to stranjo. Zgornjo vsebino morate popolnoma izbrisati z računalnika v 24 urah po prenosu. Če vam je program všeč, podprite pristno programsko opremo, kupite registracijo in pridobite boljše pristne storitve. Če pride do kakršne koli kršitve, nas prosimo kontaktirajte po elektronski pošti.

Mail To:help@itsvse.com