首页 > 解决方案 > 将 Groovy 日期操作转换为无痛

问题描述

我有一个 Elasticsearch 搜索查询,它使用我需要转换为无痛语言的 groovy 内联脚本

mdt= doc.eventstartdate.value;
dtevent = new DateTime(mdt).withTime(0,0,0,0).getMillis();
d = (dtevent<dtnow?dtnow:dtevent);

正如你所看到的,这抓住了'eventstartdate',去掉了时间(设置为00:00:00)

然后它与当前日期 (dtnow) 进行比较,如果小于当前日期,则将其更改为当前日期(实际上没有过去的日期,仅从今天开始)

我不是 Java 程序员,我相信 Painless 中的日期处理已经改变,所以希望转换上述内容?

谢谢

标签: elasticsearchelasticsearch-painless

解决方案


解决了这个问题:

Instant startDate = Instant.ofEpochMilli(doc.eventstartdate.date.millis);
long startDateMS = startDate.truncatedTo(ChronoUnit.DAYS).getEpochSecond() * 1000;
def d = (startDateMS<params.dtnow?params.dtnow:startDateMS);

推荐阅读