當前位置:偏方大全网 - 健康養生 - 彈性搜索地理位置查詢

彈性搜索地理位置查詢

最近有獲取某個位置附近房產的需求,比如獲取當前用戶所在方圓100km範圍內的房產信息。經過調查發現可以通過redis、mongodb、elasticsearch等實現。經過考慮,我們決定用es來實現。在這裏,我們簡單記錄壹下geo api在es中的使用情況。

es中有兩種類型的地理位置數據,geo_point和geo_shape。Es不能自動識別這種數據類型,需要在創建映射時手動指定。

Geo_point使用經緯度坐標,可以計算落在矩形內的點、以某點為半徑的點(圓)、多邊形內的點(已棄用)、排序、聚合等操作。

Geo_shape表示壹個復雜的圖形,用GeoJSON的格式表示。比如我們要表達壹個庫的坐標位置,如果這個庫占的位置比較大,用壹個點來表達可能不太準確,然後我們可以用geo_shape來表達。

但是這種數據類型也有缺點:比如不能排序(因為是多邊形點)。

圖中1,① ② ③ ④表示需要加入es的建築物。

2.圖中的圓圈、正方形、多邊形表示妳需要用es在後面找出裏面的位置。

3.圖中的短箭頭?代表壹個邊界。

註意?:

1.在索引中,我們自己指定的位置字段的類型是geo_point。

2.building_name的字段類型為關鍵字,表示不分詞。該字段僅用於測試,沒有任何用處。

3.es7中只有壹種類型,沒有指定索引的類型。

註意?:

1.從上面可以看出,插入地理位置有四種方式。

從上圖可以看出,左上角和右下角的坐標分別是(121.444075,31.265395)和(1217,31.535)。

通過執行查詢,您應該能夠找到上海火車站和葉晚袁晶大廈。

如圖所示,已經查詢了上海火車站和葉晚袁晶大廈,結果是正確的。

這是壹個距離查詢,是從某壹點擴展到周圍的距離範圍。

在上壹步的背景中,我們知道了上海站的坐標(121.462311.31.256224),也知道了它離周邊有多遠。在這裏,我們以上海站為中心,詢問方圓的600米建築。

註意?:

1和distance_type的值中有兩個弧和平面。

2.距離後可用的單位有千米、米、厘米、毫米、海裏、米、碼、英尺和英寸。

註意?:

1,sort執行排序。

需求:

1,es查詢語句

從上圖可以看出:

1.上海站0-500m範圍內只有1棟。

2.距離上海站500-1000之間有1棟。

3.距離上海站1000以上有兩站。

1,查詢語句,查詢出所有數據,過濾出上海站3公裏範圍內的所有建築。

2.aggs用於統計上海500m以內、500-1000m和1000m以外的建築物數量。

3.sort用於排序。

4.使用post_filter將結果縮小到上海火車站1000米以內。

1,地理點數據類型

2.距離單位

3.整理

4.矩形查詢

5、循環查詢、距離查詢

6.坐標拾取系統

  • 上一篇:靜下心來人生幸福的智慧。
  • 下一篇:有哪些簡單的瑜伽動作可以防止贅肉的堆積?
  • copyright 2024偏方大全网