我想了解ES如何在其索引内部存储日期值。可以转换为UTC吗?
我有一个日期类型的字段“ t”。这是映射:
"t": { "type" : "date" },
现在,当我向ES插入/添加文档时,它如何存储在索引中。
“ t”:“ 1427700477165”(从Date.now()函数生成的毫秒数)。ES是否在UTC中识别其时代时间并按原样存储?
“ t”:“ 2015-03-29T23:59:59”(我会相应地调整映射日期格式)-ES如何存储它。如果将其转换为UTC,如何知道该日期是哪个时区并将其转换为UTC?ES是否从运行其的计算机获取默认时区?
谢谢!
内部(在索引内)Elasticsearch将所有日期存储为以纪元格式的数字-即自格林尼治标准时间1970年1月1日00:00:00以来的毫秒数。
但是默认情况下,Elasticsearch也会存储您的原始JSON发布消息- 因此,返回时,_source您会看到发布到Elasticsearch的所有内容。
_source
为了能够将日期字符串导入为纪元格式,您需要在映射中指定格式,例如预定义的日期格式:
"t": { "type" : "date", "format" : "basic_date_time" }
为yyyyMMdd'T'HHmmss.SSSZ。
yyyyMMdd'T'HHmmss.SSSZ
或指定自定义日期格式:
"t": { "type" : "date", "format" : "YYYY-MM-dd" }
yyyy/MM/dd HH:mm:ss||yyyy/MM/dd