弹出搜索Groovy脚本不使用日期

时间:2017-02-06 10:10:21

标签: elasticsearch groovy

我正在使用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'"
            }
          }
        }

现在我得到了正确的结果。 所以在我看来,两种方式的脚本是相同的,那么为什么上面的脚本没有给出正确的结果。

感谢。

1 个答案:

答案 0 :(得分:0)

请改为:

    {
      "script": {
        "script": {
          "inline": "def hour = new Date(doc['timestamp'].value).format('hh:mm'); hour >= '08:50' && hour < '09:00'"
        }
      }
    }

参数不能包含Groovy代码,只能包含静态字符串或数字数据。