|
|
Yayınlandı 9.01.2019 17:25:39
|
|
|

Kısa giriş
ES'nin yaygın temel veri tiplerinin yanı sıra, konum bilgilerini kaydeden veri türlerini de desteklediğini biliyoruz. ES'de, coğrafi konum bilgisini kaydeden iki tür veri vardır: geo_shap ve geo_point; aşağıda kısaca geo_point türlerini tanıtacağım geo_point birden fazla veri aktarım yöntemini destekler:
String Konum: lat + "," + lon
Dizi Pozisyon: {"lat": ...,"lon": ...}
Amaç Konum: [lon, lat]
Not: Muhtemelen herkes bu çukura en az bir kez basmıştır == Coğrafi koordinat noktaları dizim olarak ifade edildiğinde enlem öncesi, boylam sonuncusu ("enlem, boylam") olurken, diziler zıt biçimde temsil edilir; boylam önce ve enlem son ([boylam, enlem]). Aslında, Elasticesearch içinde, ister bir dizi şeklinde olsun, enlem önce gelir, boylam ise sonuncudur. Ancak, ilk günlerde, GeoJSON'un biçimlendirme spesifikasyonuna uyum sağlamak için dizi biçimlerinin temsili ayarlandı. Bu resmi web sitesinde açıklanmıştır. Genel olarak geo_point türleri için aşağıdaki sorgu gereksinimleri vardır
Mesafe sorgusu Merkez noktadan menzil içindeki noktaları bulun
Mesafe menzili sorgusu (kullanımdan kaldırılmıştır) Merkez noktasının belirtilen aralığındaki sorgulama noktaları yeni ES'de API'den kaldırılıyor, bu yüzden burada çok fazla açıklamayacağım
Sınırlayıcı sorgu Belirli bir noktadan oluşan bir dikdörtgen içinde noktalar bulun
Çokgen sorgusu Birden fazla noktadan oluşan bir çokgende nokta bulun
Java'da farklı sorgular için oluşturulan SearchSourceBuilder fabrikası şöyledir:
Hizmet şu şekildedir:
Kontrolcü katmanı kodu şu şekildedir:
[1]. Nasıl kullanılır
geo_point tiplerini kullanmadan önce, indeks oluştururken eşleme yoluyla alanı geo_point tip olarak açıkça belirtmeliyiz, aşağıdaki gibi:
Yukarıda restraunt adında yeni bir indeks oluşturduk ve onun haritalama dosyasında "konum" alanının türünü açıkça "geo_point" olarak belirtiyoruz
[2] Bazı veriler hazırla
Kibana hakkında aşağıdaki verileri topladık:
Yukarıda 7 veri parçası hazırlandık ve ardından arayüzümüzün ihtiyaçlarımızı karşılayıp karşılamadığını görmek için sorguyu yürütmemiz gerekiyor.
[3] Soruşturma
Sorgu mesafesi
Diğer iki soruşturma yukarıdakilerle aynı.
|
Önceki:ElasticsearchParseException[alanı[alanı] ya [lat], [lon] ya da [geohash]] olmalıdır.Önümüzdeki:Discuz uygulamayı yüklüyor ve "Veri tanınmıyor, lütfen iade" çözümünü söylüyor
|