我想了解 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 GMT 以来的毫秒数。
然而,Elasticsearch 默认情况下也会存储您的原始 JSON 发布消息 - 因此当返回_source
您将看到发布到 Elasticsearch 的所有内容。
为了能够将日期字符串导入纪元格式,您需要在映射中指定格式,例如预定义日期格式 http://www.elastic.co/guide/en/elasticsearch/reference/current/mapping-date-format.html#built-in:
"t": { "type" : "date", "format" : "basic_date_time" }
for yyyyMMdd'T'HHmmss.SSSZ
.
或指定一个自定义日期格式 http://joda-time.sourceforge.net/api-release/org/joda/time/format/DateTimeFormat.html:
"t": { "type" : "date", "format" : "YYYY-MM-dd" }
- 如果未指定格式,则使用的默认日期解析为ISODateTimeFormat.dateOptionalTimeParser http://joda-time.sourceforge.net/api-release/org/joda/time/format/ISODateTimeFormat.html#dateOptionalTimeParser().
- 可以在映射中指定多种日期格式 - 例如
yyyy/MM/dd
HH:mm:ss||yyyy/MM/dd
- 如果未指定时区,则 Elasticsearch 假定UTC
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)