譯自官方文檔,原文請戳這裏。html
JSON中沒有date類型,所以 es 中的日期能夠是:java
es 會自動將時間轉換爲UTC(你也能夠自定義時區 time-zone),並最終存儲爲一個表明從開始紀元起計算的毫秒數。api
對日期的查詢會被自動轉換爲針對此long類型的查詢,而聚合以後的查詢結果會依據該field指定的格式從新轉爲String格式。oracle
注意:日期最終都渲染爲字符串,即便它們的初始格式在JSON中是long格式。app
Date也能夠自定義,但若是你沒有指定format,es將使用默認值:elasticsearch
"strict_date_optional_time||epoch_millis"
date支持可選的時間戳,具體格式爲 strict_date_optional_time 或 milliseconds-since-the-epoch。示例以下:ide
PUT my_index { "mappings": { "_doc": { "properties": { "date": { "type": "date" // 1 } } } } } PUT my_index/_doc/1 { "date": "2015-01-01" } // 2 PUT my_index/_doc/2 { "date": "2015-01-01T12:10:30Z" } // 3 PUT my_index/_doc/3 { "date": 1420070400001 } // 4 GET my_index/_search { "sort": { "date": "asc"} // 5 }
1 使用默認格式ui
2 使用簡單datespa
3 使用帶 time 的 datecode
4 使用毫秒偏移量
5 sort 返回的日期格式所有都是毫秒偏移量
你能夠使用 || 分隔符來指定多個日期格式。es將按順序進行匹配,直到找到一個可以匹配上的格式。es將用此格式將long轉爲string。
PUT my_index { "mappings": { "_doc": { "properties": { "date": { "type": "date", "format": "yyyy-MM-dd HH:mm:ss||yyyy-MM-dd||epoch_millis" } } } } }
date類型的field接受如下參數:
boost | 提高查詢權重。浮點型,默認值 1.0 |
doc_values | 是否使用doc_values。若是肯定不須要對此field進行排序/聚合,或者使用腳本,能夠關閉。默認true |
format | 日期格式。默認 strict_date_optional_time || epoch_millis |
locale | 用於解決月份在各語言中沒有統一縮寫的問題。默認值爲 ROOT |
ignore_malformed | 當設置爲true時將忽略錯誤數字。若是設置爲false,遇到錯誤時將拋出異常並拒絕掉整個document |
index | 若是該字段能夠被搜索,請設置爲true。默認爲true |
null_value | 當輸入值爲空時,使用該值來代替,必須爲format參數格式。默認爲null,意味着該字段丟失 |
store | 字段值是否應該在_source字段以外存儲和檢索。默認false。 |