我创建此脚本是为了获得两个字段之间的日期差:
use(groovy.time.TimeCategory) {
def duration = doc[firstDateField].date - doc[secondDateField].date;
duration.Hours;
}
为了对其进行检查,我请求此_search
请求:
#docker exec -it es curl -XGET 'http://localhost:9200/living_team/fuas/_search?pretty' -d '
{
"script_fields": {
"my_script": {
"script": {
"file": "dayDateDiff",
"params": {
"firstDateField": "timestamp",
"secondDateField": "startTimestamp"
}
}
}
}
}
'
ElasticSearch告诉我:
{
"error" : {
"root_cause" : [ {
"type" : "script_exception",
"reason" : "failed to run file script [dayDateDiff] using lang [groovy]"
} ],
"type" : "search_phase_execution_exception",
"reason" : "all shards failed",
"phase" : "query_fetch",
"grouped" : true,
"failed_shards" : [ {
"shard" : 3,
"index" : "living_v1",
"node" : "SSgkS5Y9QV-EmzaeP_7hKQ",
"reason" : {
"type" : "script_exception",
"reason" : "failed to run file script [dayDateDiff] using lang [groovy]",
"caused_by" : {
"type" : "missing_property_exception",
"reason" : "No such property: groovy for class: 94b4e4baddb8e121bd26f2098185e84d368e4162"
}
}
} ]
},
"status" : 500
}
因此,问题是,为什么我需要设置一个字段才能执行脚本?最后,如何正确发送此脚本请求?
编辑
我更改了脚本:
new Period(doc[firstDateField].date, doc[secondDateField].date).getHours();
但是,现在告诉我:
bbd8b73ce0b0dd070d07e63f11dcdad4fa12121d: 1: unable to resolve class Period
Nov 04 10:27:21 core-01 docker[3876]: @ line 1, column 1.
Nov 04 10:27:21 core-01 docker[3876]: new Period(doc[firstDateField].date, doc[secondDateField].date).getHours();
Nov 04 10:27:21 core-01 docker[3876]: ^
告诉我出现了一些问题Period
。
您可以使用另一个不使用JODA Period
类的脚本
以此来更新您的脚本文件,它将起作用:
(doc[secondDateField].date.millis - doc[firstDateField].date.millis) / 3600000
我有DateTime字符串2020-04-03 01:29:27和2020-04-03 01:29:37我想得到持续时间在小时。我已经尝试了很多东西,但这却找不到任何帮助
问题内容: 我的应用程序正在使用此脚本来增强索引中的最新项目: 它是用MVEL编写的,但是从1.3开始,对于Groovy,不推荐使用MVEL。脚本现在引发此错误: 对我来说,这听起来像Groovy中获取毫秒级时间戳的功能不同。我尝试了,但是又给出了另一个错误,说它不支持导入。 那么我该如何修复该功能以与Groovy一起使用? 问题答案: 正如您已经发现的那样,您需要用Groovy而不是MVEL重写
我在ElasticSearch中有一个索引,其中包含日期类型的两个字段(metricsTime 但是,在导航到Kibana的Discover选项卡时,我得到了以下错误消息:class_cast_exception:无法对类型[org . joda . time . mutable datetime]和[org . joda . time . mutable datetime]应用[-]操作。这看起
给定2个日期,如何根据ISO 8601工期以年-月-日、时-分-秒格式计算它们之间的差异? 我只发现Java库可以在几天或更短的时间内提供差异。 鉴于月份和年份的天数不规则,我不知道如何计算月份和年份的差异。 平均持续时间。between接近,但它以小时分秒为单位给出结果: 也就是25533小时57分58秒 我想看看这样的东西: __年__月__天9小时57分58秒
问题内容: 我知道我可以使用momentjs做任何事情,还可以做一些涉及日期的事情。但是令人尴尬的是,我很难去做一件看起来很简单的事情:得到两次之间的差。 例: 我试过的 我不知道那里的“ 10”是什么。我住在巴西,所以如果相关的话,我们是utc-0300。 结果是持续时间正确的内部值: 所以,我想我的问题是:如何将momentjs持续时间转换为时间间隔?我肯定可以用 但我觉得有一些更 优雅 ,我
我想计算Java中两小时(HH:mm:ss)之间的时间差(持续时间)。在这里,我读了几个关于这个主题的主题,但我的问题有点不同。 我也不能使用。 示例: ode: 结果: