两个不同的日期字段希望检查是GTE或LTE



AM New for Elasticsearch 6.2.1和Kibana 6.2.1。现在正在Kibana的脚本字段工作。我有两个不同的日期字段,例如(resolved_on and resolve_due_by(,我想检查条件是否sisolved_on sisthan sisthan或qualto 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)) 

请任何人可以帮我吗?

谢谢

根据文档,在无痛的脚本语言中,日期字段被公开为deadabledateTime

日期字段被暴露为ReadableDateTime,因此它们支持诸如getyear和getDayofweek之类的方法。获得毫秒,因为Epoch调用GetMillis

,他们给出以下示例

GET hockey/_search
{
  "script_fields": {
    "birth_year": {
      "script": {
        "source": "doc.born.value.year"
      }
    }
  }
}

拥有getMillis后,您将恢复比较long值。

此外,由于我认为这是一个Jodatime类(有关完整文档,请参见Joda Time API文档(,您也可以使用isBefore()isAfter()方法。

我终于找到了问题的解决方案。工作代码低于

(((!doc['resolved_on'].empty) && (doc['resolved_on'].value.getMillis() > doc['resolve_due_by'].value.getMillis())))

相关内容

最新更新