datetime - 了解 elasticsearch 如何在内部存储日期

标签 datetime elasticsearch lucene

我想了解 ES 如何在其索引内部存储日期值。它会转换为 UTC 吗?

我有一个日期类型的字段“t”。这是映射:

"t": { "type" : "date" },

现在,当我向 ES 插入/添加文档时,它如何存储在其索引中。

  1. "t": "1427700477165"(从 Date.now() 函数生成的毫秒数)。 ES 是否以 UTC 识别其纪元时间并按原样存储?

  2. "t": "2015-03-29T23:59:59"(我相应地调整映射日期格式)- ES 如何存储它。如果它转换为 UTC,它如何知道这个日期是哪个时区并将其转换为 UTC? ES 是否从其运行的机器获取默认时区?

谢谢!

最佳答案

在内部(在索引内)Elasticsearch 将所有日期存储为纪元格式的数字 - 即自格林威治标准时间 1970 年 1 月 1 日 00:00:00 以来的毫秒数。

但是默认情况下,Elasticsearch 也会存储您发布的原始 JSON 消息 - 因此当返回 _source 时,您会看到发布到 Elasticsearch 的任何内容。

为了能够将日期字符串导入纪元格式,您需要在映射中指定格式,例如 predefined date format :

"t": { "type" : "date", "format" : "basic_date_time" }

yyyyMMdd'T'HHmmss.SSSZ

或指定 custom date format :

"t": { "type" : "date", "format" : "YYYY-MM-dd" }
  • 如果未指定格式,则使用的默认日期解析为 ISODateTimeFormat.dateOptionalTimeParser .
  • 可以在映射中指定多种日期格式 - 例如yyyy/MM/dd HH:mm:ss||yyyy/MM/dd
  • 如果未指定时区,则 Elasticsearch 假定为 UTC

关于datetime - 了解 elasticsearch 如何在内部存储日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29341715/

相关文章:

java - 字符串到java中的日期时间

Python Pandas 数据格式化

json - 使用elasticsearch查询完整的JSON对象

javascript - IE 9 和 IE 最新版本上 javascript 中的不同日期格式

c++ - 用日期时间命名输出文件

java - 数值范围查询

lucene - sitecore 搜索同义词文件位置

elasticsearch - ElasticSearch如何存储_source字段和其他元字段

java - 使用 Elasticsearch JAVA API 将 network.publish_host 设置为客户端节点

search - 如何使用ElasticSearch和CURL请求在多个字段中搜索?