【问题标题】:Date difference scripted field in KibanaKibana 中的日期差异脚本字段
【发布时间】:2018-06-20 06:30:03
【问题描述】:

我想使用脚本字段找出两个字段之间的区别。以下是两个日期字段及其格式:

start_time - June 17th 2018, 09:44:46.000 end_time - June 17th 2018, 09:44:49.000

这会给proc_time

这是我在脚本字段中尝试做的事情: doc['start_time'].date.millis - doc['end_time'].date.millis 但这是返回从纪元时间中扣除的处理时间。

例如,如果我的处理时间是 2 秒,那么输出将是 epoch time - 2 seconds。 这不是我想要的。

这是示例文档:

17 Jun 2018 04:14:46 INFO CSG event file generation started at: Sun Jun 17 04:14:46 CDT 2018 17 Jun 2018 04:14:46 INFO Executing CSG file generation process Warning: Using a password on the command line interface can be insecure. 17 Jun 2018 04:15:57 INFO Finished at: Sun Jun 17 04:15:57 CDT 2018 任何帮助将不胜感激。

更新 我已经使用以下无痛脚本进行了此操作: ((doc['csg_proc_end_time'].date.year) * 31536000 + doc['csg_proc_end_time'].date.monthOfYear * 86400 + doc['csg_proc_end_time'].date.dayOfMonth * 3600 + doc['csg_proc_end_time'].date.secondOfDay) - ((doc['csg_proc_start_time'].date.year) * 31536000 + doc['csg_proc_start_time'].date.monthOfYear * 86400 + doc['csg_proc_start_time'].date.dayOfMonth * 3600 + doc['csg_proc_start_time'].date.secondOfDay)

但是,我欢迎任何其他以更简单的方式执行此操作的脚本。

添加字段的 JSON 格式: "fields": { "@timestamp": [ "2018-06-20T04:45:00.258Z" ], "zimbra_proc_time": [ 0 ], "csg_proc_time": [ 71 ], "perftech_proc_time": [ 0 ], "csg_proc_end_time": [ "2018-06-17T04:15:57.000Z" ], "csg_proc_start_time": [ "2018-06-17T04:14:46.000Z" ] },

【问题讨论】:

  • 你能展示一个示例文档吗?
  • 这是一个多行文档:``` 2018 年 6 月 17 日 04:14:46 INFO CSG 事件文件生成开始于:Sun Jun 17 04:14:46 CDT 2018 17 Jun 2018 04:14: 46 INFO 执行 CSG 文件生成过程 警告:在命令行界面上使用密码可能不安全。 2018 年 6 月 17 日 04:15:57 INFO 完成于:Sun Jun 17 04:15:57 CDT 2018 ```从中我需要找到两个时间值之间的差异
  • 我建议您使用该信息更新您的问题并使其正确可读
  • 完成。用我找到的一个解决方案更新了问题。寻找更好的方法,如果有的话。
  • 您为什么不分享您的 JSON 文档而不是原始文本?

标签: elasticsearch kibana


【解决方案1】:

这是我为重现您的问题所做的工作,并且可以正常工作:

PUT test/doc/1
{
  "csg_proc_end_time": "2018-06-17T04:15:57.000Z",
  "csg_proc_start_time": "2018-06-17T04:14:46.000Z"
}

现在计算脚本字段中的处理时间:

GET test/_search
{
  "script_fields": {
    "proc_time": {
      "script": {
        "source": "(doc.csg_proc_end_time.value.millis - doc.csg_proc_start_time.value.millis) / 1000"
      }
    }
  }
}

结果:71 秒

{
    "_index": "test",
    "_type": "doc",
    "_id": "1",
    "_score": 1,
    "fields": {
      "proc_time": [
        71
      ]
    }
  }

【讨论】:

  • 这确实有效。非常感谢。在尝试同样的事情时,我一定花了很长时间。
  • 酷,很高兴它有帮助!
猜你喜欢
  • 2018-05-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多