ELK 設置定時清理腳本清理索引
3373
2025-03-31
地理位置檢索廣泛于各行各業,在智慧城市,城市規劃,物流,房地產選址,新零售,公共安全,交通等各個方面都能夠發揮重大作用,應用包含坐標查詢(點查多邊形)、范圍查找(多邊形查點)、范圍統計分析(基于多邊形的統計分析)等,例如查詢任意指定區域內的酒店,學校,餐飲店等,統計不同電子圍欄、不同時間段的派單數,優化車輛調度等;
elasticsearch 是一個分布式、可擴展的全文搜索引擎,底層依賴開源的Lucence庫,ES是面向文檔型數據庫,內部使用倒排索引Inverted Index,而非MySQL內部的B+樹,可以基于時間構建索引,歷史索引可以定期刪除,分布式多副本索引架構。
地理位置功能僅僅是 elasticsearch 的冰山一角,Elasticsearch 的妙處在于,它讓你可以把地理位置、全文搜索、結構化搜索和分析結合到一起。Elasticsearch 提供了兩種表示地理位置的方式:用緯度-經度表示的坐標點使用 geo_point 字段類型,以GeoJSON格式定義的復雜地理形狀,使用 geo_shape 字段類型。
優點:支持多種復雜查詢,擴展性很好,例如在千萬級別的數據量下,基于點的空間檢索,性能也有比較好的表現;
性能分析
從Elasticsearch 7.0開始,ES引入了地理空間圖形字段類型的新默認索引技術,它再一次為地理空間幾何圖形提供了比傳統前綴樹索引方法更大的性能改進。從精度上來看,在7.0之后的版本創建的geo_shape字段可以達到1cm的精度,從速度上來看,與6.x geo shapes相比,它提供了更快的搜索速度和數倍的索引速度。
優化點:
1、存儲方式:三角形切割方法替代傳統的網格化編碼方式,在存儲容量和精度上有了飛躍的提升
2、索引優化:利用R-樹索引方式檢索
在BKD樹之前,利用倒排索引的方式進行空間索引,需要將空間幾何體轉化為可表示的位置信息,可通過柵格化的技術來實現編碼,geohash是一套網格化的編碼方式,經過編碼,可以將經緯度對應的點,表示為一個網格,網格的大小,取決于geohash的精度。通常,geohash使用32個字符進行編碼。業界也有使用geo base 36的編碼,即36個字符來表示的。下圖為將同一區域進行不同精度的網格化劃分,可見精度越高,會造成存儲的網格信息量成倍增加,造成精度和性能成為約束的關系。
為了有效地存儲和顯示高分辨率的幾何圖形,大多數計算機圖形和游戲引擎將這些幾何圖形分解為基本體,如三角形。三角形在很大程度上是有效的,因為“每個對象都可以分割為三角形,但三角形不能分割為除三角形之外的任何其他對象”。
使用三角形細分,可以顯著減少項的數量,并保持幾何體的原始精度,但幾何體現在表示為三角形的集合,而不是其原始頂點形式。通過這種改變,形狀索引和搜索問題被簡化為將三角形組織到BKD數據結構中的過程,從而使搜索變得高效。要實現這一目標,還需要兩項額外的改進。
首先,BKD數據結構需要一種優化組織三角形幾何體的方法。這是通過修改BKD實現的,稱為選擇性索引。選擇性索引的目標是允許N維字段指定前k個維度(索引維度),以驅動BKD樹的構建,剩余的d維度(數據維度)作為存儲的輔助數據,供葉節點使用。對于二維三角形集合,選擇前四個維度作為索引維度,代表三角形的邊界框。通過這樣做,一般的BKD樹被轉換成R樹,其中樹的內部節點是邊界框的集合,葉子包含重建原始三角形所需的數據。
第二個改進是對單個鑲嵌三角形進行緊湊的維度編碼,以便它們可以有效地存儲在樹的葉子上,而不需要不必要的大量空間。這是通過使用三個數據維度(總共七個維度)來完成的,這使得編碼能夠從前四個邊界框維度重建三角形的三個二維頂點。
在上圖中,“code”維度表示哪些頂點與原始邊界框共享,以及如何從最小/最大邊界框索引維度和y、x數據維度重建剩余頂點。例如,在第一行中,代碼維度“0”表示三角形與邊界框索引維度共享(Ymin,Xmin)和(Ymax,Xmax)頂點。第三個三角形頂點可以直接用Y和X數據維重建。通過這種編碼,可以使用總共七個維度有效地索引細分的三角形,使得BKD數據結構被組織為一個R樹,該R樹是空間搜索的最佳選擇,同時能夠從少量輔助數據重建三角形的原始頂點。
R-樹采用一種叫做MBR(Minimal Bounding Rectangle)最小外界矩形,其中的R就是指的Rectangle矩形的意思,從葉子結點開始用矩形(Rectangle)將空間框起來,結點越往上,框住的空間就越大,以此對空間進行分割。R-樹是處理空間數據的B+樹的改進,它像B+樹一樣,是一個高度平衡的數據結構,現已成為空間數據庫索引中應用最廣泛的算法之一。
R-樹是B+樹在高維空間的擴展,是一顆平衡樹,每個R-樹的葉子結點包含了多個指向不同數據的指針,這些數據可以是存放在硬盤中的,也可以是存在內存中。根據R-樹的這種數據結構,當我們需要進行一個高維空間查詢時,我們只需要遍歷少數幾個葉子結點所包含的指針,查看這些指針指向的數據是否滿足要求即可。這種方式使我們不必遍歷所有數據即可獲得答案,效率顯著提高。
可見,基于Elasticsearch可以快速高效的進行地理位置空間檢索,同時支持空間檢索和全文搜索、結構化搜索和分析結合;
geo-shape查詢
Elasticsearch支持兩種類型的地理數據:支持經緯度對的geo_point字段和支持點、線、圓、多邊形等的geo_shape字段。
本文用geo_shape舉例來進行空間查詢:在地圖上畫一個矩形,搜索區域中的店鋪。
首先,插入一家新華書店的位置數據:
PUT?/example { ???"mappings":?{ ???????"properties":?{ ???????????"location":?{ ???????????????"type":?"geo_shape" ???????????} ???????} ???} } POST?/example/_doc?refresh { ???"name":?"新華書店", ???"location":?{ ???????"type":?"point", ???????"coordinates":?[13.400544,?52.530286] ???}
然后,輸入查詢語句,進行區域內的店鋪搜索:
GET?/example/_search { ???"query":{ ???????"bool":?{? ???????????"must":?{ ???????????????"match_all":?{}? ???????????}, ???????????"filter":?{? ???????????????"geo_shape":?{? ???????????????????"location":?{? ???????????????????????"shape":?{? ???????????????????????????"type":?"envelope",? ???????????????????????????"coordinates"?:?[[13.0,?53.0],?[14.0,?52.0]]? ???????????????????????}, ???????????????????????"relation":?"within"? ???????????????????} ???????????????} ???????????} ???????} ???} }
結果:
{ ?"took"?:?71, ?"timed_out"?:?false, ?"_shards"?:?{ ???"total"?:?1, ???"successful"?:?1, ???"skipped"?:?0, ???"failed"?:?0 ?}, ?"hits"?:?{ ???"total"?:?{ ?????"value"?:?1, ?????"relation"?:?"eq" ???}, ???"max_score"?:?1.0, ???"hits"?:?[ ?????{ ???????"_index"?:?"example", ???????"_type"?:?"_doc", ???????"_id"?:?"Mav003QB1KmvPzr042GF", ???????"_score"?:?1.0, ???????"_source"?:?{ ?????????"name"?:?"新華書店", ?????????"location"?:?{ ???????????"type"?:?"point", ???????????"coordinates"?:?[ ?????????????13.400544, ?????????????52.530286 ???????????] ?????????} ???????} ?????} ???] ?} }
華為云搜索服務是一個基于開源Elasticsearch且完全托管的在線分布式搜索服務,為用戶提供結構化、非結構化文本、時間,數字,地理位置、聲音、圖片等的多條件檢索、統計、報表。
華為云CSS首頁鏈接: https://www.huaweicloud.com/product/es.html
EI企業智能 云搜索服務 CSS AI平臺
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。