gpt4 book ai didi

date - 如何使用Elasticsearch从当前时间减去日期?

转载 作者:行者123 更新时间:2023-12-03 01:05:55 29 4
gpt4 key购买 nike

我正在尝试计算Elasticsearch中文件的当前年龄。

我的计划是执行类似当前时间的操作-时间戳。

我现在正在使用脚本来执行此操作,并设法从另一个日期中减去一个日期字段

{ "query"  : 
{
"match_all" : {}
},
"fields" : ["_source"],
"script_fields" :
{ "date_diff" :
{ "script" : "doc[\"two\"].date-doc[\"one\"].date"}
}
}'

尽管我认为做错了,因为答案肯定是不正确的。 (计算出数千天的差异)

我也尝试过使用Elasticsearch日期数学建议,例如“now”,“time”,“+ 1h”等,所有这些都会导致错误

“JsonParseException [无法识别的标记'时间':在[Source:[B @ 220c4a0b; line:1,column:111]]处预期为'null','true','false'或NaN \ n”;“]

我现在不确定脚本是否正确使用。看起来应该很简单,但是我似乎找不到任何示例。

这有可能吗?有更好的方法吗?

任何帮助,将不胜感激。

最佳答案

您可以显示用例吗?例如,如果需要在UI上显示年龄,则使用创建日期进行响应仍然更好。如果您需要一些分析,按创建日期过滤应该可以解决问题。

如果确定需要通过ES查询返回文档的“年龄”,请尝试:

{
"query": {
"match_all": {}
},
"fields": ["_source"],
"script_fields": {
"age": {
"script": "(DateTime.now().getMillis() - doc['created'].value)/(24*60*60*1000)"
}
}
}

ES将日期作为unix纪元时间戳处理,您应该将当前时间转换为整数以反射(reflect)ms(使用 DateTime.now().getMillis()),然后从中减去 doc的值。这将使您的年龄以毫秒为单位。除以任何系数(如果需要)(即tj以天为单位的年龄)

关于date - 如何使用Elasticsearch从当前时间减去日期?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29536586/

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