好的想法是十分钱一打,真正无价的是能够实现这些想法的人。

ingest node 如何获取date类型?

Elasticsearch | 作者 i_love_elastic | 发布于2018年03月05日 | 阅读数:2733

去掉了原本方案中重量级的logstash,字段的解析工作交由elastic5.0开始的新特性 ingest node 来完成
这个改变并无想象中的轻松,主要体现在grok正则放到pipeline中并不能如常生效,原因有二:
1.同样的一条日志记录存放到logstash与elastic中的格式是有差异的
2.pipeline中使用的正则很不标准,譬如理解中的"."表任意字符,即也能匹配空白符"\s",logstash grok中保留了这个含义,而pipeline中却不是
 
不过这些问题都能通过多次使用 simulate pipeline 来模拟出符合需求的 pipeline
只是最后还有一个问题是本人尚未解决的,就是让日志数据通过 ingest node 的 pipeline 加工后,并不能得到如期的date类型
 
问题描述:
  最原始的日志数据:[2017-02-02T09:02:34.234+01:00] nl.trifork.blog.MyClass - abc
  经拆分后:"time": "2017-02-02T09:02:34.234+01:00","class_name":"nl.trifork.blog.MyClass","msg":"abc"
  倘若是使用此前的 logstash grok 来做,它对日志数据加工完后,便推送给 elastic,当 elastic 得到string类型的"time"后便能识别出它的格式,随后就将其转为date类型,我们就能很自然地使用time字段进行时间范围的相关搜索了;
  而问题就在于使用 pipeline 作了等价的拆分操作后,elastic并不能识别出"time"的格式,依然是将其作为string的方式存储,显得"time"字段毫无意义。这难道是因为 ingest node 本来就原生自 elasticsearch 而导致在第一次摄取时就错过自动转换的时机吗?
 
!!!求教在 ingest node 中如何将string格式的时间转为date格式呢!!!
已邀请:

要回复问题请先登录注册