|
|
Közzétéve 2019. 01. 09. 17:25:39
|
|
|

Rövid bevezetés
Tudjuk, hogy az ES számos adattípust támogat, a szokásos alapvető adattípusokon túl olyan adattípusokat is támogat, amelyek helyadatokat rögzítenek. Az ES-ben kétféle adat található, amelyek földhelymeghatározási információkat rögzítenek: geo_shap és geo_point, és röviden bemutatok geo_point típust az alábbiakban geo_point több adatátviteli módszert támogat:
húr Pozíció: lat + "," + lon
Tömb Pozíció: {"lat": ...,"lon": ...}
Cél Elhelyezkedés: [hosszú, szélesség]
Megjegyzés: Valószínűleg mindenki legalább egyszer lépett ezen a gödrön == A földrajzi koordinátapontok a szélesség először, hosszi fok utolsó ("szélesség, hosszúság") húrokként, míg a tömbök ellentétes formában jelennek meg, a hosszúsági fok először, szélesség utolsó ([hosszúság, szélesség]). Valójában az Elasticesearch-ben, akár húr, akár tömb formájában, a szélesség az első, a hosszúság pedig utolsó. Azonban a korai időkben, hogy alkalmazkodjanak a GeoJSON formázási specifikációjához, a tömbformák ábrázolását módosították. Ezt a hivatalos weboldalon magyarázzák el. Általában a következő lekérdezési követelmények vannak geo_point típusokra vonatkozóan
Távolsági lekérdezés Keress távolságon belüli pontokat a középponttól
Távolságtávolsági lekérdezés (elavult) Az új ES verzióban az API-ból eltávolítják a lekérdezési pontokat a középpont megadott tartományában, így nem magyarázom el túl sokat itt
Bounding lekérdezés Találj pontokat egy téglalapon belül, amely egy meghatározott pontból áll
Sokszög lekérdezés Találj pontokat egy többpontból álló sokszögben
A különböző Java lekérdezésekhez létrehozott SearchSourceBuilder gyár a következő:
A szolgálat a következők szerint:
A vezérlőréteg kódja a következő:
[1]. Hogyan kell használni
Mielőtt geo_point típusokat használnánk, először kifejezetten meg kell határoznunk a mezőt geo_point típusként az index létrehozásakor, leképezéssel, a következőként:
Fent létrehoztunk egy új indexet restraunt néven, és a leképező fájljában kifejezetten megadjuk a "hely" mező típusát "geo_point"
[2] Készíts elő adatokat
Kibana esetében a következő adatokat készítettük el:
Fent 7 adatdarabot készítettünk elő, majd le kell futtatnunk a lekérdezést, hogy megnézzük, megfelel-e az interfészünk az igényeinknek.
[3] Vizsgálat
Lekérdezési távolság
A másik két kérdés ugyanaz, mint fentebb.
|
Előző:Az ElasticsearchParseException[mező vagy [lat], [lon] vagy [geohash]] lehet.Következő:Discuz telepíti az alkalmazást, és azt mondja: "Az adat nem ismerős, kérjük, küldje vissza" megoldást
|