2017-05-29 45 views
1

我想确保某个doc_type的所有文档都有一个“updatedAt”时间戳(ISO 8601),该文档在更新时会更新。它需要是服务器端的时间戳,因为我不知道我是否可以相信所有的客户端时间都是同步的。如何将“updatedAt”时间戳添加到elasticsearch文档

我使用摄取管道添加“createdAt”时间戳,但似乎不支持使用更新API的管道。

我试过使用更新脚本(使用新提供的'ctx._now'值),但无法解析到ISO 8601工作。此外,我不确定更新脚本是最可维护的方法,因为每个更新类型都需要一个自定义脚本。

回答

0

在我的剧本我用以下无痛线来标记updatedAt时间戳:

ctx._source.updatedAt = ZonedDateTime.ofInstant(Instant.ofEpochMilli(ctx._now), ZoneId.of("Z")); 

ž区id是UTC时区。 updatedAt字段的日期类型设置为date。奇怪的是,将ctx._now分配给字段也是有效的。但它看起来不同于我的日期字段的其余部分,所以我更喜欢上述方式来保持事物的一致性。

相关问题