我正在尝试编写一个更新脚本,只有当updatedAt字段的日期大于源记录上的updatedAt日期时才更新记录。
这是我正在使用的脚本,不介意$和{}它们是javascript中的字符串文字语法。
该脚本使用无痛。
`ctx.op = ${moment(updatedAt).unix()} > ctx._source["updatedAt"] ? "update" : "none";`
该字段的映射是没有指定格式的日期。当我尝试执行此查询时,我收到此错误:
{
"took": 7,
"errors": true,
"items": [
{
"update": {
"_index": "search",
"_type": "locations",
"_id": "119",
"status": 400,
"error": {
"type": "illegal_argument_exception",
"reason": "failed to execute script",
"caused_by": {
"type": "script_exception",
"reason": "runtime error",
"caused_by": {
"type": "class_cast_exception",
"reason": "Cannot apply [>] operation to types [java.lang.Integer] and [java.lang.String]."
},
"script_stack": [
"ctx.op = 1485985330 > ctx._source[\"updatedAt\"] ? \"update\" : \"none\";",
" ^---- HERE"
],
"script": "ctx.op = 1485985330 > ctx._source[\"updatedAt\"] ? \"update\" : \"none\";",
"lang": "painless"
}
}
}
}
]
}