Elasticsearch 地理座標點資料型別

2021-10-10 18:34:28 字數 2289 閱讀 8435

地理座標點

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

put /company-locations

, "location": }}}

put /company-locations/_doc/1

put /company-locations/_doc/2

}put /company-locations/_doc/3

字串形式以半形逗號分割,如 「lat,lon」

物件形式顯式命名為 lat 和 lon

陣列形式表示為 [lon,lat]

通過地理座標點過濾

有四種地理座標點相關的過濾器 可以用來選中或者排除文件

插入以下文件,將會報錯

user索引層設定dynamic是strict,在user層內設定age將報錯

在address層設定dynamic是ture,將動態對映生成字段

}如果你想在執行時增加新的字段,你可能會啟用動態對映。 然而,有時候,動態對映 規則 可能不太智慧型。幸運的是,我們可以通過設定去自定義這些規則,以便更好的適用於你的資料

日期檢測

當 elasticsearch 遇到乙個新的字串欄位時,它會檢測這個字段是否包含乙個可識別的日期,比如2014-01-01 如果它像日期,這個欄位就會被作為 date 型別新增。否則,它會被作為 string 型別新增。

有些時候這個行為可能導致一些問題。想象下,你有如下這樣的乙個文件:

假設這是第一次識別 note 字段,它會被新增為 date 字段。但是如果下乙個文件像這樣:

這顯然不是乙個日期,但為時已晚。這個字段已經是乙個日期型別,這個 不合法的日期 將會造成乙個異常。

日期檢測可以通過在根物件上設定 date_detection 為 false 來關閉

}使用這個對映,字串將始終作為 string 型別。如果需要乙個 date 字段,必須手動新增。elasticsearch 判斷字串為日期的規則可以通過 dynamic_date_formats setting 來設定

delete /my_index

put /my_index

}put /my_index/_doc/1

put /my_index/_doc/1

put /my_index2}},

}}]}}

put /my_index2/_doc/1

}}

Elasticsearch 地理搜尋

目錄任意地理形狀搜尋 elasticsearch中使用geo point型別定義地理位置。下面是一些示例資料 location欄位是geo point型別的,可以使用字串,數字或者乙個物件來提供經緯度。注意使用字串和陣列來提供經緯度時,經度和緯度引數有不同的順序。最後一條記錄使用地理雜湊值,詳細描述...

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可以查詢在乙個中心點指定半徑範圍內的地理文件。例如...