Šis straipsnis yra veidrodinis mašininio vertimo straipsnis, spauskite čia norėdami pereiti prie originalaus straipsnio.

Rodinys: 15452|Atsakyti: 0

[Šaltinis] "Java" geografinės vietos nustatymo informacija "ElasticSearch" (geo_point)

[Kopijuoti nuorodą]
Paskelbta 2019-01-09 17:25:39 | | |
Trumpas įvadas

Žinome, kad ES palaiko įvairius duomenų tipus, be įprastų pagrindinių duomenų tipų, taip pat palaiko duomenų tipus, kuriuose įrašoma vietos informacija. ES yra dviejų tipų duomenys, kuriuose įrašoma geografinės vietos informacija, būtent geo_shap ir geo_point, ir toliau trumpai pristatysiu geo_point tipus
geo_point palaiko kelis duomenų perdavimo būdus:

eilutė
Padėtis: lat + "," + lon

masyvas
Padėtis: {"lat": ...,"lon": ...}

Objektas
Vieta: [lon, lat]


Pastaba: Tikriausiai visi bent kartą yra įžengę į šią duobę == Geografiniai koordinačių taškai yra pirma platuma ir paskutinė ilguma ("platuma, ilguma"), kai išreiškiama eilutėmis, o masyvai vaizduojami priešinga forma, pirmiausia ilguma ir paskutinė platuma ([ilguma, platuma]). Tiesą sakant, "Elasticesearch", nesvarbu, ar tai būtų eilutės, ar masyvo pavidalo, platuma yra pirmoje vietoje, o ilguma - paskutinė. Tačiau pirmosiomis dienomis, siekiant prisitaikyti prie GeoJSON formatavimo specifikacijos, masyvo formų atvaizdavimas buvo pakoreguotas. Tai paaiškinta oficialioje svetainėje.
Paprastai geo_point tipams taikomi šie užklausų reikalavimai

Atstumo užklausa
Raskite taškus diapazone nuo centrinio taško

Atstumo diapazono užklausa (nebenaudojama)
Užklausos taškai nurodytame centrinio taško diapazone pašalinami iš API naujoje ES versijoje, todėl čia per daug nepaaiškinsiu
Ribojamoji užklausa
Raskite taškus stačiakampyje, susidedančiame iš nurodyto taško

Daugiakampio užklausa
Raskite taškus daugiakampyje, sudarytame iš kelių taškų

"SearchSourceBuilder" gamykla, sukurta įvairioms "Java" užklausoms, yra tokia:


įteikimas taip:

Valdiklio sluoksnio kodas yra toks:

[1]. Kaip naudoti

Prieš naudodami geo_point tipus, kurdami indeksą pirmiausia turėtume aiškiai nurodyti lauką kaip geo_point tipą per susiejimą, kaip nurodyta toliau:


Aukščiau sukūrėme naują indeksą, pavadintą "restraunt", o jo žemėlapių faile aiškiai nurodome "vietos" lauko tipą kaip "geo_point"

[2] Paruoškite kai kuriuos duomenis

"Kibana" paruošėme šiuos duomenis:


Aukščiau paruošėme 7 duomenų vienetus, tada turime vykdyti užklausą, kad pamatytume, ar mūsų sąsaja atitinka mūsų poreikius.

[3] Tyrimas

Užklausos atstumas


Kiti du klausimai yra tokie patys kaip aukščiau.




Ankstesnis:ElasticsearchParseException[laukas turi būti [lat], [lon] arba [geohash]]
Kitą:"Discuz" įdiegia programą ir sako "Duomenys neatpažįstami, grąžinkite" sprendimą
Atsakomybės apribojimas:
Visa programinė įranga, programavimo medžiaga ar straipsniai, kuriuos skelbia Code Farmer Network, yra skirti tik mokymosi ir mokslinių tyrimų tikslams; Aukščiau nurodytas turinys negali būti naudojamas komerciniais ar neteisėtais tikslais, priešingu atveju vartotojai prisiima visas pasekmes. Šioje svetainėje pateikiama informacija gaunama iš interneto, o ginčai dėl autorių teisių neturi nieko bendra su šia svetaine. Turite visiškai ištrinti aukščiau pateiktą turinį iš savo kompiuterio per 24 valandas nuo atsisiuntimo. Jei jums patinka programa, palaikykite autentišką programinę įrangą, įsigykite registraciją ir gaukite geresnes autentiškas paslaugas. Jei yra kokių nors pažeidimų, susisiekite su mumis el. paštu.

Mail To:help@itsvse.com