在ElasticSearch中使用术语聚合与脚本(禁用动态脚本时)

时间:2015-04-10 18:03:47

标签: groovy elasticsearch

我在ElasticSearch中执行包含以下代码的查询:

"aggs": {
  "day_of_week": {
    "terms": {
      "script": "def myDate = new DateTime(doc['timestamp'].date); myDate.withZone(DateTimeZone.forID(timeZoneInfo)).getDayOfWeek()"
      "size": 0
    }
  }
}

问题是,出于安全原因,默认情况下现在禁用动态脚本,因此这将失败,并显示错误" ScriptException [[groovy]的动态脚本已禁用]"。有关动态脚本的详细信息,请参阅此页面:https://www.elastic.co/blog/running-groovy-scripts-without-dynamic-scripting

我知道建议的解决方法是使用脚本文件。不幸的是,这似乎不受聚合术语的支持(它只对过滤器有效吗?)。

为了解决这个问题,我们非常感谢任何帮助,因为出于安全考虑,我无法真正保留动态脚本。

1 个答案:

答案 0 :(得分:1)

所以看起来这是可能的 - 我只是使用了不正确的格式。在我的例子中,我创建了一个名为" date_time_zoned_hour_of_day"的groovy脚本文件。并将其添加到elasticsearch / config / scripts中。

代码如下:

<meta property="og:image" content="http://www.lux-boutique.co.uk/fblogo.png"/>