首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ElasticSearch:用于无痛的groovy脚本

ElasticSearch:用于无痛的groovy脚本
EN

Stack Overflow用户
提问于 2017-02-17 10:04:48
回答 1查看 903关注 0票数 0

我使用groovy语言(datediff.groovy)编写了这个脚本:

代码语言:javascript
复制
(doc[secondDateField].date.millis - doc[firstDateField].date.millis) / 3600000

效果很好。不过,我打算将这些脚本移到painless (datediff.painless)中。尽管如此,我还是收到了关于straup的编译错误:

代码语言:javascript
复制
[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"]..。

EN

回答 1

Stack Overflow用户

发布于 2017-02-17 10:48:36

您的查询在Painless中应该是这样的,如果您试图将它转换为毫秒,而且您还遗漏了字段名前后的单引号'

代码语言:javascript
复制
(doc['secondDateField'].date.millisOfSecond - doc['firstDateField'].date.millisOfSecond) / 3600000

millis应该和卢塞内枣一样多毫秒。

希望这能有所帮助!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42294983

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档