【发布时间】:2020-08-31 19:59:57
【问题描述】:
我的弹性搜索中有一个字符串字段,其持续时间格式为00:00:00.000000。我想将其转换为一个数字字段,即总毫秒数。
编辑:
我曾想过使用脚本字段,但它不起作用。
try{
String duration = doc['app.duration'].value;
String[] durationParts = new String[3];
int firstIdx = duration.indexOf(":");
int secondIdx = duration.indexOf(":", firstIdx+1);
durationParts[1] = duration.substring(firstIdx+1, secondIdx);
durationParts[2] = duration.substring(secondIdx+1);
long minutes = Long.parseLong(durationParts[1]) * 60000;
float seconds = Float.parseFloat(durationParts[2]) * 1000;
long mAndS = Math.round(minutes + seconds);
return mAndS;
}
catch(Exception e) {
return -1;
}
上述在第一行 String duration = doc['app.duration'].value; 失败,我得到 -1。但是,如果我将第一行更改为像 String duration = "00:00:01.5250000"; 这样的硬编码值,那么我会得到预期的 1525。
我不确定我做错了什么。从我使用doc 对象阅读的内容来看,字段是如何访问的。
【问题讨论】:
标签: elasticsearch elasticsearch-painless