两个不同的日期字段要检查是 gte 还是 lte
Two different date fields want to check is gte or lte
我是 Elasticsearch 6.2.1
和 Kibana 6.2.1
的新手。现在正在 kibana 中编写脚本化的 Field。
我在索引中有两个不同的日期字段,例如 (resolved_on 和 resolve_due_by) 我想检查 resolved_on 是否小于或等于 resolve_due_bye 的条件。我尝试了一些如下所示的脚本查询
doc['resolved_on'] <= doc['resolve_due_by'] <!-- This not working -->
下面的代码现在可以运行了。我不知道进行两次约会是否正确。
((doc['resolved_on'].date.dayOfYear <= doc['resolve_due_by'].date.dayOfYear) && (doc['resolved_on'].date.millisOfDay <= doc['resolve_due_by'].date.millisOfDay))
请问有人能帮我吗?
谢谢
根据the documentation,在无痛脚本语言中,日期字段公开为 ReadableDateTime
Date fields are exposed as ReadableDateTime
so they support methods like getYear, and getDayOfWeek. To get milliseconds since epoch call getMillis
他们举了下面的例子
GET hockey/_search
{
"script_fields": {
"birth_year": {
"script": {
"source": "doc.born.value.year"
}
}
}
}
获得 getMillis
后,您将返回比较 long
值。
此外,因为我假设这是一个 JodaTime class(有关完整文档,请参阅 Joda Time API documentation),您还可以使用 isBefore()
或 isAfter()
方法。
我终于找到了问题的答案。工作代码如下
(((!doc['resolved_on'].empty) && (doc['resolved_on'].value.getMillis() > doc['resolve_due_by'].value.getMillis())))
我是 Elasticsearch 6.2.1
和 Kibana 6.2.1
的新手。现在正在 kibana 中编写脚本化的 Field。
我在索引中有两个不同的日期字段,例如 (resolved_on 和 resolve_due_by) 我想检查 resolved_on 是否小于或等于 resolve_due_bye 的条件。我尝试了一些如下所示的脚本查询
doc['resolved_on'] <= doc['resolve_due_by'] <!-- This not working -->
下面的代码现在可以运行了。我不知道进行两次约会是否正确。
((doc['resolved_on'].date.dayOfYear <= doc['resolve_due_by'].date.dayOfYear) && (doc['resolved_on'].date.millisOfDay <= doc['resolve_due_by'].date.millisOfDay))
请问有人能帮我吗?
谢谢
根据the documentation,在无痛脚本语言中,日期字段公开为 ReadableDateTime
Date fields are exposed as
ReadableDateTime
so they support methods like getYear, and getDayOfWeek. To get milliseconds since epoch call getMillis
他们举了下面的例子
GET hockey/_search
{
"script_fields": {
"birth_year": {
"script": {
"source": "doc.born.value.year"
}
}
}
}
获得 getMillis
后,您将返回比较 long
值。
此外,因为我假设这是一个 JodaTime class(有关完整文档,请参阅 Joda Time API documentation),您还可以使用 isBefore()
或 isAfter()
方法。
我终于找到了问题的答案。工作代码如下
(((!doc['resolved_on'].empty) && (doc['resolved_on'].value.getMillis() > doc['resolve_due_by'].value.getMillis())))