我想确保某个doc_type的所有文档都有一个“updatedAt”时间戳(ISO 8601),只要文档更新,它就会更新。它需要是服务器端时间戳,因为我不知道我是否可以相信所有客户端时间都是同步的。
我使用摄取管道添加“createdAt”时间戳,但似乎使用更新API不支持管道。
我尝试过使用更新脚本(使用新提供的'ctx._now'值),但无法解析为ISO 8601。此外,我不确定更新脚本是否是最易于维护的方式,因为每种更新类型都需要自定义脚本。
答案 0 :(得分:0)
在我的脚本中,我使用以下无痛线来标记updatedAt时间戳:
ctx._source.updatedAt = ZonedDateTime.ofInstant(Instant.ofEpochMilli(ctx._now), ZoneId.of("Z"));
Z zone id用于UTC时区。 updatedAt
字段的日期类型设置为date
。奇怪的是,仅将ctx._now
分配给字段也有效。但它在源代码中看起来与我的其他日期字段不同,所以我更喜欢上述方法来保持一致。