elasticsearch - 将 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 中的日期处理已经改变,所以希望转换上述内容?
谢谢
解决方案
解决了这个问题:
Instant startDate = Instant.ofEpochMilli(doc.eventstartdate.date.millis);
long startDateMS = startDate.truncatedTo(ChronoUnit.DAYS).getEpochSecond() * 1000;
def d = (startDateMS<params.dtnow?params.dtnow:startDateMS);
推荐阅读
- elasticsearch - Elasticsearch:从查询匹配中计算文档
- android - ResourceType 对于资源条目索引超出类型 entryCount
- reactjs - 如何使用 Material-UI 在 React JS 中对表格中不是数字或文本的项目进行排序?
- php - 进行 Angular 6 php mysql api 调用
- sql - 在将数据添加到访问数据库之前检查重复条目
- ajax - 点跟踪显示在执行多个 ASP.NET MVC 操作时等待 CPU
- web-config - 如何强制 IIS7 立即查看 Web.config 中的更改?
- node.js - 如何使用 Cloud Functions for Firebase 获取子值的键?
- angular - 如何在 Angular 6 和 vmware-clarity 的 UI 中显示错误消息
- excel - 通过excel VBA控制写字板