|
|
Diposting pada 09/01/2019 17.25.39
|
|
|

Pengantar singkat
Kami tahu bahwa ES mendukung berbagai jenis data, selain tipe data dasar umum kami, ES juga mendukung tipe data yang merekam informasi lokasi. Dalam ES, ada dua jenis data yang mencatat informasi geolokasi, yaitu geo_shap dan geo_point, dan saya akan memperkenalkan secara singkat jenis geo_point di bawah ini geo_point mendukung beberapa metode transfer data:
String Posisi: lat + "," + lon
Array Posisi: {"lat": ...,"lon": ...}
Objek Lokasi: [lon, lat]
Catatan: Mungkin semua orang telah menginjak lubang ini setidaknya sekali == Titik koordinat geografis adalah garis lintang pertama dan garis bujur terakhir ("lintang, bujur") bila dinyatakan sebagai string, sedangkan array direpresentasikan dalam bentuk yang berlawanan, dengan garis bujur pertama dan garis lintang terakhir ([bujur, lintang]). Faktanya, dalam Elasticesearch, baik itu dalam bentuk string atau array, garis lintang didahulukan dan bujur berada di urutan terakhir. Namun, pada hari-hari awal, untuk beradaptasi dengan spesifikasi pemformatan GeoJSON, representasi formulir array disesuaikan. Ini dijelaskan di situs resminya. Umumnya ada persyaratan kueri berikut untuk jenis geo_point
kueri jarak Temukan titik dalam jangkauan dari titik tengah
kueri rentang jarak (tidak digunakan lagi) Mengkueri titik dalam rentang titik pusat yang ditentukan dihapus dari API di versi baru ES, jadi saya tidak akan menjelaskannya terlalu banyak di sini
Kueri Pembatas Temukan titik dalam persegi panjang yang terdiri dari titik tertentu
Kueri poligon Temukan titik dalam poligon yang terdiri dari beberapa titik
Pabrik SearchSourceBuilder yang dibuat untuk kueri yang berbeda di Java adalah sebagai berikut:
layanan sebagai berikut:
Kode lapisan pengontrol adalah sebagai berikut:
[1]. Cara menggunakan
Sebelum kita menggunakan jenis geo_point, pertama-tama kita harus secara eksplisit menentukan bidang sebagai jenis geo_point melalui pemetaan saat membuat indeks, sebagai berikut:
Di atas kami telah membuat indeks baru bernama restraunt, dan dalam file pemetaannya, kami secara eksplisit menentukan jenis bidang "lokasi" sebagai "geo_point"
[2] Siapkan beberapa data
Di Kibana kami telah menyiapkan data berikut:
Kami telah menyiapkan 7 bagian data di atas, dan kemudian kami perlu menjalankan kueri untuk melihat apakah antarmuka kami memenuhi kebutuhan kami.
[3] Pertanyaan
Jarak kueri
Dua pertanyaan lainnya sama seperti di atas.
|
Mantan:ElasticsearchParseException[bidang harus [lat], [lon] atau [geohash]]Depan:Diskusi menginstal aplikasi dan mengatakan solusi "Data tidak dikenali, silakan kembali"
|