您好,登錄后才能下訂單哦!
這篇文章主要講解了“elasticsearch怎么設置地理位置”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“elasticsearch怎么設置地理位置”吧!
geo_point
: 地理坐標類型
lat_lon
: 設置為 true
時,lat
、lon
字段將被分別索引。它們可以被用于檢索,但是不會在檢索結果中返回。
{ "mappings": { "<index_name>": { "properties": { "<field>": { "type": "geo_point", "lat_lon": true } } } } }
格式一:字符串,格式 "lat,lon"
{ "location": "40.715, -74.011" }
格式二:
{ "location": { "lat": 40.722, "lon": -73.989 } }
格式三:數組,格式 [lon,lat]
{ "location": [ -73.983, 40.719 ] }
地理坐標盒模型過濾器
,找出落在指定矩形框中的點
地理坐標盒模型過濾器
不需要把所有坐標點都加載到內存里。 因為它要做的只是簡單判斷 lat
和 lon
坐標數值是否在給定的范圍內,可以用倒排索引做一個 range
過濾來實現目標
設置 type
參數為 indexed
(替代默認值 memory
)來明確告訴 Elasticsearch
對這個過濾器使用倒排索引。
{ "query": { "filtered": { "filter": { "geo_bounding_box": { "type": "indexed", "location": { "top_left": { "lat": 40.8, "lon": -74.0 }, "bottom_right": { "lat": 40.7, "lon": -73.0 } } } } } } }
地理距離過濾器
,找出與指定位置在給定距離內的點
常用距離單位: mi(英里), yd(碼), in(英寸), km(千米), m(米), cm(厘米), mm(毫秒)
{ "query": { "filtered": { "filter": { "geo_distance": { "distance": "1km", "location": { "lat": 40.715, "lon": -73.988 } } } } } }
地理距離區間過濾器
, 找出與指定點距離在給定最小距離和最大距離之間的點
匹配那些距離中心點大于等于 1km 而小于 2km 的位置
{ "query": { "filtered": { "filter": { "geo_distance_range": { "gte": "1km", "lt": "2km", "location": { "lat": 40.715, "lon": -73.988 } } } } } }
找出落在多邊形中的點。 這個過濾器使用代價很大。當你覺得自己需要使用它,最好先看看
計算每個文檔中 location
字段與指定的 lat/lon
點間的距離
將距離以 km
為單位寫入到每個返回結果的 sort
鍵中
使用快速但精度略差的 plane
計算方式
{ "query": { "filtered": { "filter": { "geo_bounding_box": { "type": "indexed", "location": { "top_left": { "lat": 40.8, "lon": -74.0 }, "bottom_right": { "lat": 40.4, "lon": -73.0 } } } } } }, "sort": [ { "_geo_distance": { "location": { "lat": 40.715, "lon": -73.998 }, "order": "asc", "unit": "km", "distance_type": "plane" } } ] }
感謝各位的閱讀,以上就是“elasticsearch怎么設置地理位置”的內容了,經過本文的學習后,相信大家對elasticsearch怎么設置地理位置這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。