elasticsearch基於地理位置的搜尋

2021-10-14 06:48:30 字數 1638 閱讀 1263

參考:

elasticsearch基於地理位置的搜尋,有乙個專門的物件geo_point儲存地理位置資訊(經度,緯度),並且提供了一些基本的查詢方法,如geo_bounding_box。

put /my_geo

,      "name": 

}}}

建立了乙個my_geo索引,新增了乙個欄位location,它的型別是geo_point

#latitude:維度,longitude:經度

post /my_geo/_doc

}post /my_geo/_doc

}

1.geo_distance查詢,根據當前位置的距離進行搜尋,非常實用

查詢5km範圍內都有誰,filter使用geo_distance查詢,我們定義距離distance為5km,再指定geo型別的字段location

post /my_geo/_search}}

}}

}

結果發現:路人甲,路人乙都出來啦,你再試著改變舉例3km看看效果呢?

2.geo_bounding_box查詢,查詢某個矩形的地理位置範圍內的座標點

post /my_geo/_search

,        "bottom_right":}} 

}}

3.geo_polygon查詢,查詢三個點(三角形)範圍內的座標點

支援多邊形,只是這個過濾器使用代價很大,盡量少用

post /my_geo/_search

,          ,]}

}}}

按從近到遠排序

post /my_geo/_search}}

}},

"sort": [

,"order": "asc",

"unit": "m",

"distance_type": "plane"}}

]}

_geo_distance: 固定寫法,下面為指定位置的經緯度

unit: 距離的單位,m/km都行

distance_type: 計算距離的方式,sloppy_arc (預設值), arc (精準的) and plane (最快速的)

返回值:

,

"hits" : ,

"max_score" : null,

"hits" : [

},"sort" : [

2704.400492813901]},

},"sort" : [

3503.0165324004943]}

]}}

sort裡面的內容,就是與當前位置的地面距離,單位是m。

unit表示距離單位,常用的是mi和km。

distance_type表示計算距離的方式,sloppy_arc (預設值), arc (精準的) and plane (最快速的)。

post /my_geo/_search

,        "unit": "mi", 

"distance_type": "arc", 

"ranges": [,,

]}

}}}

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個客戶端節點 負責處理搜尋請求...

elasticsearch配置說明

elasticsearch.yml是elasticsearch主要的配置檔案,所有的配置都在這個檔案裡完成,一般情況下,預設的配置已經可以比較好地執行乙個集群了,但你也可以對其進行微調。在環境變數中的引數可以用來作為配置引數的值,比如配置檔案裡舉的乙個例子為 node.rack 再比如 等。下面對其...