ElasticSearch在Groovy脚本中获取时间
我的应用程序正在使用此脚本来增强索引中的最新项目:
(5 / ((3.16*pow(10,-11)) * abs(time() - doc[\'date\'].date.getMillis()) + 0.2)) + 1.0
它是用MVEL编写的,但是从1.3开始,对于Groovy,不推荐使用MVEL。脚本现在引发此错误:
GroovyScriptExecutionException[MissingMethodException[No signature of method: Script4.time() is applicable for argument types: () values: []\nPossible solutions: find(), dump(), find(groovy.lang.Closure), use([Ljava.lang.Object;), is(java.lang.Object), with(groovy.lang.Closure)]]
对我来说,这听起来像Groovy中获取毫秒级时间戳的功能不同。我尝试了System.currentTimeMillis()
,但是又给出了另一个错误,说它不支持导入。
那么我该如何修复该time()
功能以与Groovy一起使用?
回答:
正如您已经发现的那样,您需要用Groovy而不是MVEL重写脚本。无需花费时间,您就可以使用DateTime.now().getMillis()
。以下是使用方式的示例:http : //writequit.org/org/es/index.html#time-in-groovy-
script
以上是 ElasticSearch在Groovy脚本中获取时间 的全部内容, 来源链接: utcz.com/qa/422490.html