Elasticsearch 時間型別總結

2021-09-12 18:26:59 字數 1102 閱讀 3925

elasticsearch 可以寫入、查詢不同的時間型別,但當遇到 unix 時間戳和其他時間格式的時候會有點混亂,因此本文主要是總結一下各種時間型別和其他的表示方式。

json沒有日期型別,因此在 elasticsearch 中可以表達成:

日期格式化的字串,比如: "2015-01-01" 或者 "2015/01/01 12:10:30";

毫秒級別的long型別或秒級別的integer型別,比如: 1515150699465, 1515150699;

實際上不管日期以何種格式寫入,在 es 內部都會先換成 utc 時間並儲存為long型別。

日期格式可以自定義,如果沒有指定的話會使用以下的預設格式:

"strict_date_optional_time||epoch_millis"

因此總結來說,不管哪種可以表示時間的格式寫入,都可以用來表示時間!請利用 kibana 或者 es 的 restful api 來寫入文件,並且進行最後的查詢。你就會發現用不同時間格式寫入的資料,都可以用 es 來進行查詢、排序。

圖1 索引中增加文件

put my_index}}

}}put my_index/_doc/1

put my_index/_doc/2

put my_index/_doc/3

get my_index/_search

}

put my_index}}

}}

儘管在json文件裡,日期都會用字串來表示,但是 es 內建了很多不同的日期格式用來把這些表示時間的字串解析成日期格式。此外,除了內建的格式以外,使用者還可以通過例如yyyy/mm/dd這樣的語法用來解析日期。

往 es 寫入時間型別的資料的時候,可以寫入不同的時間格式的值,最終在 es 中都會轉化成long型別用於查詢和排序。

elasticSearch 時間型別

elasticsearch原生支援date型別,結合該型別和kibana可以做出漂亮有用的圖表。這裡簡單記錄下使用的方法。使用date型別可以用如下兩種方式 使用毫秒的時間戳,直接將毫秒值傳入即可。date型別是包含時區資訊的,如果我們沒有在json代表日期的字串中顯式指定時區,對es來說沒什麼問題...

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