我正在使用ES,我需要一个查询,返回两个日期时间(mysql timediff
)之间的差异,但没有找到任何ES函数来做这件事。有人可以帮助我吗?
MySQL query:
SELECT SEC_TO_TIME(
AVG(
TIME_TO_SEC(
TIMEDIFF(r.acctstoptime,r.acctstarttime)
)
)
) as average_access
FROM radacct
字符串
我正在使用ES,我需要一个查询,返回两个日期时间(mysql timediff
)之间的差异,但没有找到任何ES函数来做这件事。有人可以帮助我吗?
MySQL query:
SELECT SEC_TO_TIME(
AVG(
TIME_TO_SEC(
TIMEDIFF(r.acctstoptime,r.acctstarttime)
)
)
) as average_access
FROM radacct
字符串
3条答案
按热度按时间ldxq2e6h1#
如果您启用了动态脚本,并且这些日期字段在Map中定义为日期,那么上面的搜索查询应该可以工作。
字符串
请注意,你将得到的结果在历元,你需要转换为您的面额。
您可以在这里阅读有关scripted field的内容以及它的一些示例here。
qmb5sa222#
下面是另一个使用脚本字段的例子。它将日期转换为自epoch以来的毫秒,减去两者并将结果转换为两个日期之间的天数。
字符串
6g8kf2rb3#
脚本字段工作,但不幸的是,接受的答案不适合我在2023年与弹性8.10.经过大量的尝试,我来了以下工作:
字符串
记住
toEpochSecond
与toEpochSecond*s*
的对比,你也可以在一些答案中找到,但是它似乎也过时了。