是否可以将相对时间字段添加到 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 -".
它不是很漂亮,但它似乎可以工作。我确信它可以大大改进,但它似乎符合我的需要。希望这对其他人有帮助。
我想向数据表添加一个字段,该字段显示基于另一个日期字段的经过时间。具体来说,我有一个提供事件日期和时间的字段,并且需要另一个字段来显示该事件发生在 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 -".
它不是很漂亮,但它似乎可以工作。我确信它可以大大改进,但它似乎符合我的需要。希望这对其他人有帮助。