我使用groovy语言(datediff.groovy)编写了这个脚本:
(doc[secondDateField].date.millis - doc[firstDateField].date.millis) / 3600000效果很好。不过,我打算将这些脚本移到painless (datediff.painless)中。尽管如此,我还是收到了关于straup的编译错误:
[esn1] failed to load/compile script [datediff]: {
"type" : "script_exception",
"reason" : "compile error",
"caused_by" : {
"type" : "illegal_argument_exception",
"reason" : "Variable [secondDateField] is not defined."
},
"script_stack" : [
"(doc[secondDateField].date.mil ...",
" ^---- HERE"
],
"script" : "(doc[secondDateField].date.millis - doc[firstDateField].date.millis) / 3600000",
"lang" : "painless"
}它告诉我secondDateField是没有定义的。你能帮我拿一下吗?
secondDateField不是名为secondDateField的字段。它是一个脚本参数(如firstDateField),doc参数应该访问parameter内容中设置的字段。如果secondDateField = "fieldOne",doc[secondDateField] => doc["fieldOne"]..。
发布于 2017-02-17 10:48:36
您的查询在Painless中应该是这样的,如果您试图将它转换为毫秒,而且您还遗漏了字段名前后的单引号':
(doc['secondDateField'].date.millisOfSecond - doc['firstDateField'].date.millisOfSecond) / 3600000millis应该和卢塞内枣一样多毫秒。
希望这能有所帮助!
https://stackoverflow.com/questions/42294983
复制相似问题