当前位置: 首页 > 面试题库 >

了解Elasticsearch如何在内部存储日期

那昊
2023-03-14
问题内容

我想了解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的所有内容。

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

"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假定为 UTC


 类似资料:
  • 问题内容: 我想在Elasticsearch中添加一个日期时间字符串时遇到问题。 该文件如下: 该文档提出了一个错误 我知道我可以在Elasticsearch中使用日期格式,但是即使阅读网站上的文档,我也不知道如何使用。 和 错了。 如何在Elasticsearch中将datetime字符串转换为日期格式? 如何将datetime字符串直接存储到Elasticsearch中? 问题答案: 你快到了

  • 问题内容: 假设您有一个键类(KeyClass),该键类具有重写的equals,hashCode和clone方法。假设它有2个基本字段,一个String(名称)和一个int(id)。 现在您定义 现在 因此,就HashMap而言,keyOriginal,keyCopy和keyClone是无法区分的。 现在,如果您使用keyOriginal将条目放入HashMap,则可以使用keyCopy或keyC

  • 问题内容: java中的一个int数组作为一个32位值块存储在内存中。如何存储整数对象数组?即 我以为Integer数组中的每个元素都是对Integer对象的引用,并且Integer对象与其他任何对象一样都具有对象存储开销。 但是,我希望JVM能够在底层实现一些神奇的功能,因为Integer是不可变的,并且像整数数组一样存储它。 我的希望真是天真吗?在性能至关重要的应用程序中,整数数组是否比整数数

  • 日期在Oracle中是如何存储的?例如,我知道大多数系统使用Epoch时间来确定它是什么时间。通过计算距离1970年1月1日有多少秒。Oracle也这样做吗? 我问这个问题的原因是我注意到,如果在Oracle中取两个日期,然后减去它们,就会得到一个浮点数,即两个日期之间的天数。 示例 将返回类似的内容(取决于时间) 现在,Oracle是在进行转换并输出该格式,还是在存储日期时,它离某个时间段有多少

  • 我正试图开始在我的一个应用程序中实现网络推送。在我找到的示例中,客户端的endpointURL通常存储在内存中,注释如下: 在生产中,您会将其存储在数据库中。。。 因为只有我的应用程序的注册用户才能/将获得推送通知,所以我的计划是将endpointURL存储在我数据库中用户的元数据中。到目前为止,一切顺利。 当我想允许同一个用户在多个设备上接收通知时,问题就来了。理论上,我只会为用户订阅的每个设备

  • 问题内容: 如何复制到外部存储保持,以便以后可以共享首选项。 试图读取并另存为一个文件,创建了类型,但我需要一个。想过遍历应用程序的内部存储和复制文件,然后将其放入外部存储,但这可能太复杂了。 真的很想知道是否存在一种简单而明智的方式来传递`sharedpreferences。 问题答案: 使用此代码, 并取回它, 注意 使用此代码只能处理字符串类型首选项,