2017-05-29 19 views
1

特定のdoc_typeのすべての文書に、文書が更新されるたびに更新される「updatedAt」タイムスタンプ(ISO 8601)が必要です。すべてのクライアント時間が同期していると信じることができるかどうかわからないので、サーバー側のタイムスタンプである必要があります。elasticsearch文書に「updatedAt」タイムスタンプを追加する方法

"createdAt"タイムスタンプを追加するためにインジェストパイプラインを使用しますが、更新APIを使用してパイプラインがサポートされていないようです。

私は更新スクリプト(新しく利用可能な 'ctx._now'値を使用して)を使用しようとしましたが、ISO 8601の解析を行うことができません。さらに、すべての更新タイプがカスタムスクリプトを必要とするため、更新スクリプトが最もメンテナンス可能な方法であるかどうかはわかりません。私のスクリプトで

答えて

0

私はupdatedAtタイムスタンプをマークするために無痛行を以下の使用します。

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

ZゾーンIDは、UTCタイムゾーンのためです。 updatedAtフィールドの日付タイプはdateです。変わったのは、フィールドにctx._nowを割り当てるだけで動作するということです。しかし、それは私の日付フィールドの残りの部分とソースで異なって見えるので、私は物事を一貫性を保つために上記の方法を好む。

関連する問題