了解Elasticsearch如何在内部存储日期
我想了解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的所有内容。
为了能够将日期字符串导入为纪元格式,您需要在映射中指定格式,例如预定义的日期格式:
"t": { "type" : "date", "format" : "basic_date_time" }
为yyyyMMdd'T'HHmmss.SSSZ
。
或指定自定义日期格式:
"t": { "type" : "date", "format" : "YYYY-MM-dd" }
- 如果未指定格式,则使用的默认日期解析为 ISODateTimeFormat.dateOptionalTimeParser。
- 可以在映射中指定多种日期格式-例如
yyyy/MM/dd HH:mm:ss||yyyy/MM/dd
- 如果未指定时区,则Elasticsearch假定为
以上是 了解Elasticsearch如何在内部存储日期 的全部内容, 来源链接: utcz.com/qa/406364.html