地理坐標(biāo)點(diǎn)
可以用來(lái)計(jì)算兩個(gè)坐標(biāo)間的距離,還可以判斷一個(gè)坐標(biāo)是否在另一個(gè)區(qū)域中秫舌,或在聚合中只厘。
地理坐標(biāo)點(diǎn)不能被動(dòng)態(tài)映射(dynamic mapping)自動(dòng)檢測(cè),需要顯示聲明geo-point
經(jīng)緯度信息可以是字符串舅巷、數(shù)組或者對(duì)象
注意經(jīng)緯度的順序問(wèn)題
通過(guò)地理坐標(biāo)點(diǎn)過(guò)濾
找出落在指定矩形框中的點(diǎn):geo_bounding_box
找到與指定位置在給定距離內(nèi)的點(diǎn):geo_distance
找出與指定點(diǎn)距離在給定最小距離和最大距離之間的點(diǎn):geo_distance_range
找出落在多邊形中的點(diǎn)(代價(jià)很大):geo_polygon
地理坐標(biāo)過(guò)濾器使用代價(jià)昂貴羔味。盡可能先使用其他過(guò)濾器過(guò)濾
地理坐標(biāo)盒模型過(guò)濾器
geo_bounding_box不需要把所有坐標(biāo)點(diǎn)都加載到內(nèi)存里,只需要簡(jiǎn)單判斷l(xiāng)at和lon坐標(biāo)數(shù)據(jù)是否在給定范圍內(nèi)钠右「吃可以用倒排索引做一個(gè)range過(guò)濾來(lái)實(shí)現(xiàn)目標(biāo)。
使用這種優(yōu)化方式,需要把geo_point字段用lat和lon的方式分別映射到索引中搁凸。
過(guò)濾時(shí)設(shè)置type為indexed明確告訴ES這個(gè)過(guò)濾器使用倒排索引
地理距離過(guò)濾器
代價(jià)昂貴媚值,為了優(yōu)化性能,ES先使用一個(gè)盒模型來(lái)排除掉盡可能多的文檔
通常使用矩形模型也能滿足應(yīng)用需求
地理距離計(jì)算
arc
:最慢最精確护糖,將地球當(dāng)成球體來(lái)處理褥芒。精度受限于地體并不是完全的球體
plane
:將地球當(dāng)成是平坦的來(lái)處理。在赤道附近精度最好
sloppy_arc
:精度換速度嫡良,比arc塊4到5倍锰扶,精度達(dá)99.9%。默認(rèn)的計(jì)算方式
按距離排序
當(dāng)你可以按距離排序時(shí)寝受,按距離打分通常是一個(gè)更好的解決方案坷牛。
Geohashes
是一種將經(jīng)緯度坐標(biāo)編碼成字符串的方式。
Geohashes把整個(gè)世界分為32個(gè)單元的格子很澄,4行8列
可以控制精度
Geohash單元查詢
geohash_cell京闰,將經(jīng)緯度坐標(biāo)根據(jù)指定精度轉(zhuǎn)換成一個(gè)geohash,然后查找所有包含這個(gè)geohash的位置甩苛。
Geo aggs
geo_distance蹂楣,地理位置距離,將文檔按照距離圍繞一個(gè)中心點(diǎn)來(lái)分組讯蒲。
geo_bounding_box捐迫,geohash網(wǎng)格,將文檔按照geohash范圍來(lái)分組爱葵,用來(lái)顯示在地圖上施戴。
地理位置邊界,返回一個(gè)包含所有地理位置坐標(biāo)點(diǎn)的邊界的經(jīng)緯度坐標(biāo)萌丈。
Geoshapes
地理形狀
geo-shapes:判斷查詢的形狀與索引的形狀的關(guān)系赞哗。不能用于計(jì)算距離、排序辆雾、打分以及聚合肪笋。
關(guān)系可以是,intersects有重疊度迂,disjoint完全不重疊藤乙,within被包含。
映射地理形狀:需要考慮精度惭墓、距離誤差
索引地理形狀
查詢地理形狀坛梁,允許使用形狀來(lái)做查詢;在查詢中使用已索引的形狀