两个不同的日期字段要检查是 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())))