1

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

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

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

4

1 回答 1

1

在我的脚本中,我使用以下无痛行来标记 updatedAt 时间戳:

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

Z zone id 用于 UTC 时区。该updatedAt字段的日期类型设置为date。奇怪的是,仅分配ctx._now给字段也有效。但是它的源代码看起来与我的其他日期字段不同,所以我更喜欢上述方式来保持一致。

于 2017-11-03T10:38:52.787 回答