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.
|