【发布时间】:2015-01-07 18:17:56
【问题描述】:
我的应用程序正在使用此脚本来提升索引中最近的项目:
(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?
【问题讨论】:
-
嗨 Jonah,如果您不介意,请告诉我上述脚本如何帮助提升最新项目..?谢谢你的帮助 。 (我只是按“更新日期”降序排序以获取最新项目。这是一个带有时间戳的日期。)..再次感谢
-
不确定您到底需要什么信息,但如果您在下面查看我的回答,您可以看到整个使用上下文。
-
感谢您的回复,很抱歉我错过了您的评论。在您的问题中,您提到了以下几行。很抱歉,我找不到使用此脚本来提高性能的原因。为什么我们不能直接按日期排序来获取最新的项目,为什么我们必须使用这个脚本? “我的应用程序正在使用这个脚本来提升索引中最近的项目:(5 / ((3.16*pow(10,-11)) * abs(time() - doc[\'date\'].date.getMillis ()) + 0.2)) + 1.0"
-
Your lines ""我的应用程序正在使用这个脚本来提升索引中最近的项目:(5 / ((3.16*pow(10,-11)) * abs(time() - doc [\'date\'].date.getMillis()) + 0.2)) + 1.0""
-
@Bujji 我使用这个脚本的原因是温和地提升结果的新近程度。如果我只是按日期排序,它们将不再按与搜索查询的相关性排序。
标签: groovy elasticsearch timestamp mvel