在Elasticsearch中,如何将时区应用于脚本化日期操作?

通过下面的汇总并使用ES5,我想基于给定的时区(从TZ数据库提供作为标识符)获取dayOfWeek和hourOfDay。

如何编辑"doc['created'].date.dayOfWeek'以调整偏移量?

    aggs: {

dayOfWeek: {

terms: {

script: {

inline: "doc['created'].date.dayOfWeek",

lang: 'painless',

},

},

aggs: {

hourOfDay: {

terms: {

script: {

inline: "doc['created'].date.hourOfDay",

lang: 'painless',

},

},

},

},

},

},

回答:

这样的事情应该起作用:

{

"size": 0,

"aggregations": {

"dayOfWeek": {

"terms": {

"script": {

"inline": "doc['created'].date.setZone(org.joda.time.DateTimeZone.forID(tz)); doc['created'].date.dayOfWeek",

"lang": "groovy",

"params": {

"tz": "Europe/London"

}

}

},

"aggs": {

"hourOfDay": {

"terms": {

"script": {

"inline": "doc['created'].date.setZone(org.joda.time.DateTimeZone.forID(tz)); doc['created'].date.hourOfDay",

"lang": "groovy",

"params": {

"tz": "Europe/London"

}

}

}

}

}

}

}

}

您可能需要通过添加script.engine.groovy.inline.aggs:

on到elasticsearch.yml文件来启用groovy的内联脚本。请参阅:此讨论。

注意。上面的内容无法正常工作,因为它已被锁定,并且不允许您编辑白名单。。

以上是 在Elasticsearch中,如何将时区应用于脚本化日期操作? 的全部内容, 来源链接: utcz.com/qa/402822.html

回到顶部