gpt4 book ai didi

elasticsearch-painless - 操纵日期

转载 作者:行者123 更新时间:2023-11-29 02:47:49 24 4
gpt4 key购买 nike

我正在尝试使用 elasticsearch 的脚本语言 painless 来操作日期。具体来说,我尝试添加 4 小时,即 14,400 秒。

{
"script_fields": {
"new_date_field": {
"script": {
"inline": "doc['date_field'] + 14400"
}
}
}
}

这会抛出 无法将 [+] 操作应用于类型 [org.elasticsearch.index.fielddata.ScriptDocValues.Longs] 和 [java.lang.Integer]。

谢谢

最佳答案

解决方案是使用.value

{
"script_fields": {
"new_date_field": {
"script": {
"inline": "doc['date_field'].value + 14400"
}
}
}
}

然而,我实际上想用它来重新索引,格式有点不同。这是我在 _reindex api

中操纵时间的版本
POST _reindex
{
"source": {
"index": "some_index_v1"
},
"dest": {
"index": "some_index_v2"
},
"script": {
"inline": "def sf = new SimpleDateFormat(\"yyyy-MM-dd'T'HH:mm:ss\"); def dt = sf.parse(ctx._source.date_field); def calendar = sf.getCalendar(); calendar.setTime(dt); def instant = calendar.toInstant(); def localDateTime = LocalDateTime.ofInstant(instant, ZoneOffset.UTC); ctx._source.date_field = localDateTime.plusHours(4);"
}
}

这是可读版本的内联脚本

def sf = new SimpleDateFormat(\"yyyy-MM-dd'T'HH:mm:ss\");
def dt = sf.parse(ctx._source.date_field);
def calendar = sf.getCalendar();
calendar.setTime(dt);
def instant = calendar.toInstant();
def localDateTime = LocalDateTime.ofInstant(instant, ZoneOffset.UTC);
ctx._source.date_field = localDateTime.plusHours(4);

Here是painless支持的函数列表,很痛苦。

关于elasticsearch-painless - 操纵日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45864201/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com