Elasticsearch 地理搜尋

2022-02-07 20:40:17 字數 1375 閱讀 8404

目錄任意地理形狀搜尋

elasticsearch中使用geo_point型別定義地理位置。

下面是一些示例資料:

location欄位是geo_point型別的,可以使用字串,數字或者乙個物件來提供經緯度。注意使用字串和陣列來提供經緯度時,經度和緯度引數有不同的順序。最後一條記錄使用地理雜湊值,詳細描述見

使用座標進行查詢的方式有多種

按照與給定地點的距離進行排序。

},

"sort":[}]

}

使用_geo_distance表明按照距離進行排序,unit的值有:km(公里),mi(英里)。

當需要在地圖上顯示結果,或者允許使用者標記地圖區域來搜尋時,非常有用

}}}

通過提供左上和右下座標,形成乙個矩形區域。elasticsearch會自動計算出該區域,並返回位於該區域中的點的資料記錄。

把結果限定為離基準點乙個選定的距離之內。

}

}

elasticsearch使用geo_shape來定義自定義形狀。

對映如下:

,

"location":}}

}

上面定義了乙個poi索引型別,location欄位使用geo_shape型別(不同的es版本寫法略有不同)。

geo_shape型別欄位的結構語法被稱為geojson.它允許我們定義各種地理型別。

乙個點的第乙個元素是經度,第二個元素是緯度。

}

乙個包絡線(envelope)通過提供左上和右下兩個座標定義乙個框。

乙個多邊形通過乙個連線點的列表來建立。陣列中的第乙個點和最後乙個點必須是一樣的,保證閉合。

multipolygon形狀包含多個多邊形,除了有多個多邊形還可以包含多個被排除的形狀。

比如查詢某個區域中是否有資料時,可以使用多邊形定義這個區域,elasticsearch就能返回該區域內的資料。

下面是乙個查詢用法:

形狀的定義很複雜,但是形狀不會經常改變。在索引中定義形狀,並在查詢中使用它們。

對映定義如下:

索引下面資料:

查詢語句如下:

}}}

}

比較最近這兩個查詢,shape變成了indexed_shape。需要告訴elasticsearch去**找這個形狀。

Elasticsearch 地理座標點資料型別

地理座標點 地理座標點是指地球表面可以用經緯度描述的乙個點。地理座標點可以用來計算兩個座標間的距離,還可以判斷乙個座標是否在乙個區域中。地理座標點需要顯式宣告對應字段型別為 geo point put company locations location put company locations ...

elasticsearch基於地理位置的搜尋

參考 elasticsearch基於地理位置的搜尋,有乙個專門的物件geo point儲存地理位置資訊 經度,緯度 並且提供了一些基本的查詢方法,如geo bounding box。put my geo name 建立了乙個my geo索引,新增了乙個欄位location,它的型別是geo poin...

Elasticsearch實戰 地理位置查詢

為了方便學習es的地理位置查詢,這裡準備了一些地理座標為測試資料,每一條資料都包含城市名稱和地理座標兩個字段。首先把下面的內容儲存到geo.json檔案中 然後建立乙個索引 put geo,location 再執行 geo distancequery可以查詢在乙個中心點指定半徑範圍內的地理文件。例如...