ElasticSearch 空間搜尋 (一)

2022-08-26 18:48:09 字數 1642 閱讀 7434

依據索引文件的地理座標來進行搜尋。elasticsearch 也可以處理這種搜尋。——空間搜尋

put my_space_test

, "locationpoint": ,

"locationshape": }}

}}

post my_space_test/poi/_bulk}}

}}},"locationshape":}}}

}}

細緻**locationpoint欄位能夠看到座標能夠使用多種形式來賦值,能夠使用字串、陣列(僅僅能包括兩個數值)、乙個物件、地理雜湊值等來提供經緯度。

詳細每種方式可能略有不同,詳細使用再查相關資料。

再來看一下。locationshape,其形式就更加多樣了,能夠是乙個點 ,即為一組數值對 [ 經度,維度 ] ,也能夠是乙個框 [ [左。上], [右,下] ],還能夠是多邊形。可是必須保證第乙個座標和最後乙個座標是同樣的,從而保證是乙個閉合的圖形。[ [ [1,1],[2,2], [3,4] ,[1,1] ] ] ,能夠發現多邊形的定義中其能夠是多個多邊形,是乙個可擴充套件的陣列。

get my_space_test/poi/_search

},"sort": [

,"unit": "km",

"order": "asc"}}

]}get my_space_test/poi/_search

},"sort": [}]}

以上查詢的結果是一樣的(注意陣列和字串座標的位置順序是不同的)通過距離座標點 [  2.3508,48.8567 ]的大小來對查詢文件進行排序。這在實際搜尋中很實用,能夠返回臨近的一些座標點。

示意圖 1

返回的文件就像是包括在矩形和圓形中的藍色點,紅色點用來確定邊框,紅色線段確定距離範圍。在圖形之外的點就被過濾掉了。以上都是針對型別為geo_point

以下我們來看一下geo_shape型別是怎樣使用的?

"query": ,

"relation": "within"}}

},,"relation": "within"}}

},,"relation": "within"}}

},,"relation": "within"}}

}]}}

}}

首先來說,過濾查詢的字段locationshap 中包括多種形狀型別。有點、包絡線、多邊形、甚至說多個多邊形

以上的查詢是看那些形狀位於所查詢的形狀之內。

我們再來個示意圖吧,這樣好理解一些。

示意圖2

比方說,我們能夠定義乙個中國的多邊形。然後查詢那些城市是位於中國的。這些城市也能夠是多邊形,當然也能夠用乙個點來定義,通過這種過濾方式都能夠準確的找到。

怎麼樣?es是不是非常炫?革命尚未成功,同志仍需努力!堅持你才幹看到最美的風景,即便一路上會有荊棘。接下來看看。空間搜尋相應的高亮和聚合。待續……

釋放Elasticsearch儲存空間

elasticsearch刪除文件並沒有真正刪除,僅作了刪除標記,從而不能再被搜尋到。為了 磁碟空間,需要 forcemergeapi進行清理和優化。為了理解force merge api,我們需要大概了解elasticsearch的底層架構lucene。當往索引中插入文件時,文件被對映到乙個或多個...

elasticsearch配置詳解

elasticsearch的config資料夾裡面有兩個配置檔案 elasticsearch.yml和logging.yml,第乙個是es的基本配置檔案,第二個是日誌配置檔案,es也是使用log4j來記錄日誌的,所以logging.yml裡的設定按普通log4j配置檔案來設定就行了。下面主要講解下e...

誰在使用Elasticsearch

github github使用elasticsearch搜尋20tb的資料,包括13億的檔案和1300億行的 這個不用介紹了吧,碼農們都懂的,github在2013年1月公升級了他們的 搜尋,由solr轉為elasticsearch,目前集群規模為26個索引儲存節點和8個客戶端節點 負責處理搜尋請求...