我对Painless非常陌生。我想编写一个简单的脚本来获取@timestamp和T1之间的时差(以毫秒为单位)。
我尝试使用doc ['somefield']。value和doc ['somefield']。date.millis,但我可以访问 @timestamp ,但不能访问 T1 。
任何帮助将不胜感激!我在下面发布了示例数据源:
{
"_source": {
"@timestamp": "2018-11-06T00:20:08.802Z",
"fields": {
"T1": "2018-11-06T00:20:07.862Z",
}
}
答案 0 :(得分:1)
您可以创建一个脚本字段,以返回@timestamp
和fields.T1
之间的差异,如下所示:
POST your-index/_search
{
"script_fields": {
"diff": {
"script": {
"source": """
def ts = Instant.parse(params._source['@timestamp']);
def t1 = Instant.parse(params._source.fields.T1);
return ChronoUnit.MICROS.between(ts, t1);
"""
}
}
}
}
答案 1 :(得分:0)
您可以定义起始值和终止值并返回差值:
def start = doc['start_event'].date.getMillis();
def stop = doc['stop_event'].date.getMillis();
return stop - start;