I am trying to find the elapsed time
elapsed time: duration of time b/w now and createdTime
To pass the current_time (ie now) I have added it to the params, and I can access that in the source field by writing params['now']
The problem is that this value of params['now'] is a string and not of type date
The below example works as I have added doc['updatedTime'], in place of params['now']
how can I get it to work with params['now']
WORKING
GET entity.incident_action_item/_search
{
"script_fields": {
"timeElapsed": {
"script": {
"source": "doc['updatedTime'].value.toInstant().getEpochSecond() - doc['createdTime'].value.toInstant().getEpochSecond()",
"params": {
"now": "2022-03-31T17:18:28.153+0530"
}
}
}
}
}
NOT WORKING
GET entity.incident_action_item/_search
{
"script_fields": {
"timeElapsed": {
"script": {
"source": "params['now'].value.toInstant().getEpochSecond() - doc['createdTime'].value.toInstant().getEpochSecond()",
"params": {
"now": "2022-03-31T17:18:28.153+0530"
}
}
}
}
}
I have tried multiple combinations and tried different methods supported by the painless language, I was not able to get it work
I faced one or the other exception
It is a format issue.
The params[now] holds a string type value. You need to convert the string into a ZonedDateTime or DateTime.
I have been using the painless Lab available in to run the following code.
String datetime = "2022-03-31T17:18:28.153+0530";
DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ss.SSSxxxx");
ZonedDateTime zdt = ZonedDateTime.parse(datetime, dtf);
return zdt;
POST _reindex
{
"source": {
"index": "old_index"
},
"dest": {
"index": "new_index"
},
"script": {
"source": """
String dateTime = ctx._source.createDateTimeStr;
DateTimeFormatter df = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss:SSS").withZone(ZoneId.systemDefault());
ZonedDateTime date = ZonedDateTime.parse(dateTime, df);
DateTimeFormatter df2 = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss").withZone(ZoneId.systemDefault());
ctx._source.createDateTime = date.format(df2)
""",
"lang": "painless"
}
}
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With