新しくIndexを定義して、既存データはreindexによる移行で ISO8601形式のフィールドにし、
移行後に登録される新規データについては、Logstashのフィルターで何とかしたい、ということでしょうか。
Reindex時のフォーマット変換
date processorを使うと簡単かと思います。
PUT _ingest/pipeline/discusstest
{
"description": "discuss test",
"processors": [
{
"date" : {
"field" : "testdate",
"target_field" : "testdate",
"formats" : ["yyyy/MM/dd HH:mm:ss"],
"timezone" : "UTC"
}
}
]
}
で、このIngestPipelineをreindex時に指定しておくと、作成後の方はISO8601(dateのフォーマット指定なし)で作成されるかと思います。
POST _reindex
{
"source": {
"index": "before_index"
},
"dest": {
"index": "after_index",
"pipeline": "discusstest"
}
}
Logstashでの日付フォーマット
dateフィルターを使って文字列からdate型にしておくと、出力されるときにはISO8601型になっているはずです。
filter {
date {
match => [ "hogehoge", "yyyy/MM/dd HH:mm:ss" ]
# ↓ 元データがUTCでなければ、UTCに変換する(9時間引くなど)
# timezone => "Asia/Tokyo"
target => "hogehoge"
}
}
たとえば、以下のようになります。
入力値 "hogehoge" => "2019/12/13 09:00:00"
出力値 "hogehoge" => 2019-12-13T00:00:00.000Z,
ご参考になれば幸いです。