gpt4 book ai didi

java - Elasticsearch:比较日期(无痛脚本)

转载 作者:行者123 更新时间:2023-12-02 11:07:32 28 4
gpt4 key购买 nike

我的 createdAt映射:

"createdAt": {
"type": "date"
},

插入日期如下:

POST logs/_doc/_bulk?pretty
{"index":{"_id":1}}
{"createdAt":"2018-05-01T07:30:00Z","value":"on"}

当我索取文件

GET logs/_doc/_search

它显示了我插入的日期:

"_source": {
"createdAt": "2018-05-01T07:30:00Z",
"value":"on"
}

现在我想将此日期与当前时间进行比较:

"map_script": {
long timestampLog = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.S").parse(doc.createdAt.value).getTime();
long timestampNow = new Date().getTime();

if (timestampNow < timestampLog) {
// case 1
} else {
// case 2
}
}

奇怪:
doc.createdAt.value 返回“2018-05-01T07:30:00.000Z”,其中包括我从未添加的毫秒

解析时发生错误:

Cannot cast org.joda.time.MutableDateTime to java.lang.String 

当我用字符串 2018-05-01T07:30:00.000Z 替换 doc.createdAt.value 时,它起作用了。

感谢任何帮助。非常感谢!

最佳答案

日期类型的 Elasticsearch 索引字段为 org.joda.time.DateTime无痛。使用 SimpleDateFormat 是错误的根源。试试这个:

long timestampLog = doc['createdAt'].value.getMillis();
long timestampNow = new Date().getTime();

其余部分按原样工作。

在 Elasticsearch 6.3.0 上测试。

关于java - Elasticsearch:比较日期(无痛脚本),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50852829/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com