是否可以将相对时间字段添加到 Kibana 数据表

Is it possible to add a Relative Time Field to a Kibana Datatable

我想向数据表添加一个字段,该字段显示基于另一个日期字段的经过时间。具体来说,我有一个提供事件日期和时间的字段,并且需要另一个字段来显示该事件发生在 1 天 2 小时 15 分钟前。当他们在一分钟后查看相同的可视化时,该字段应该更新为 1 天 2 小时 16 分钟前。

我知道我可以让用户 select 他们想要关注的时间范围,但我试图从提供此字段的先前(非 ELK)解决方案中复制功能。

这就是我想出的:

long different = (System.currentTimeMillis() - doc['BeginDate'].value);
long secondsInMilli = 1000;
long minutesInMilli = secondsInMilli * 60;
long hoursInMilli = minutesInMilli * 60;
long daysInMilli = hoursInMilli * 24;

long elapsedDays = different / daysInMilli;
different = different % daysInMilli;

long elapsedHours = different / hoursInMilli;
different = different % hoursInMilli;

long elapsedMinutes = different / minutesInMilli;
different = different % minutesInMilli;

long elapsedSeconds = different / secondsInMilli;
different = different % secondsInMilli;

if(elapsedSeconds < 1) {
   different.toString() + " milliseconds";
} else if (elapsedSeconds == 1) {
    elapsedSeconds.toString() + " second, " + different.toString() + " milliseconds";
} else if (elapsedMinutes < 1) {
    elapsedSeconds.toString() + " seconds, " + different.toString() + " milliseconds";
} else if (elapsedMinutes == 1) {
    elapsedMinutes.toString() + " minute, " + elapsedSeconds.toString() + " seconds";
} else if (elapsedHours < 1) {
    elapsedMinutes.toString() + " minutes, " + elapsedSeconds.toString() + " seconds";
} else if (elapsedHours == 1) {
    elapsedHours.toString() + " hour, " + elapsedMinutes.toString() + " minutes";
} else if (elapsedDays < 1) {
    elapsedHours.toString() + " hours, " + elapsedMinutes.toString() + " minutes";
} else if (elapsedDays == 1) {
    elapsedDays.toString() + " day, " + elapsedHours.toString() + " hours";
} else {
  elapsedDays.toString() + " days, " + elapsedHours.toString() + " hours"; 
}

我在索引模式中添加了一个脚本字段,语言选择"painless",类型选择"date",格式选择"String",转换为“- none -".

它不是很漂亮,但它似乎可以工作。我确信它可以大大改进,但它似乎符合我的需要。希望这对其他人有帮助。