我想在数据表中添加一个字段,该字段显示基于另一个日期字段的已用时间。具体来说,我有一个提供事件日期和时间的字段,需要另一个字段来显示事件发生在1天2小时15分钟前。当他们在一分钟后查看相同的可视化时,该字段应该更新为1天2小时16分钟前。
我知道我可以让用户选择他们想要关注的时间范围,但我试图从提供此字段的先前(非ELK)解决方案中复制功能。
答案 0 :(得分:0)
所以这就是我提出的:
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";
}
我在索引模式中添加了一个脚本字段,为语言选择“无痛”,为类型选择“date”,为Format设置“String”,并且Transform为“ - none - ”。
它不漂亮,但似乎有效。我确信它可以大大改进,但它似乎符合我的需要。希望这有助于其他人。