我正在使用groovy脚本对弹性搜索结果应用过滤器。 以下是剧本:
{
"script": {
"script": {
"inline": "hour >= '08:50' && hour < '09:00'",
"params": {
"hour": "new Date(doc['timestamp'].value).format('hh:mm')"
}
}
}
}
下面的脚本返回零结果,现在当我将上面的脚本更改为如下所示:
{
"script": {
"script": {
"inline": "new Date(doc['@timestamp'].value).format('hh:mm') >= '08:50' && new Date(doc['@timestamp'].value).format('hh:mm') < '09:00'"
}
}
}
现在我得到了正确的结果。 所以在我看来,两种方式的脚本是相同的,那么为什么上面的脚本没有给出正确的结果。
感谢。
答案 0 :(得分:0)
请改为:
{
"script": {
"script": {
"inline": "def hour = new Date(doc['timestamp'].value).format('hh:mm'); hour >= '08:50' && hour < '09:00'"
}
}
}
参数不能包含Groovy代码,只能包含静态字符串或数字数据。