Add the mapping to the template and a script
process to the ingest pipeline... and you do not need the @
for every timestamp / date that is just and nameing convtion for the special field @timestamp
take a look at this...
POST _ingest/pipeline/_simulate
{
"pipeline": {
"processors": [
{
"script": {
"lang": "painless",
"source": """ZonedDateTime zdt = ZonedDateTime.parse(ctx['@timestamp'], DateTimeFormatter.ISO_ZONED_DATE_TIME);
String time_of_day = zdt.format(DateTimeFormatter.ISO_LOCAL_TIME);
ctx['time_of_day'] = time_of_day;
"""
}
}
]
},
"docs": [
{
"_source": {
"@timestamp": "2023-12-04T03:55:39.219Z"
}
}
]
}
# result
{
"docs": [
{
"doc": {
"_index": "_index",
"_version": "-3",
"_id": "_id",
"_source": {
"time_of_day": "03:55:39.219",
"@timestamp": "2023-12-04T03:55:39.219Z"
},
"_ingest": {
"timestamp": "2023-12-04T04:50:52.377145525Z"
}
}
}
]
}