logstash grok时间戳_ISO8601类型?
我有一个简单的logstash grok过滤器:logstash grok时间戳_ISO8601类型?,logstash,logstash-grok,Logstash,Logstash Grok,我有一个简单的logstash grok过滤器: filter { grok { match => { "message" => "^%{TIMESTAMP_ISO8601:timestamp} %{NOTSPACE:name} %{WORD:level} %{SPACE} %{GREEDYDATA:message}$" } overwrite => [ "message" ] } } 这是可行的,它解析我的日志,但根据Kibana的说法,时间戳值是以
filter {
grok {
match => { "message" => "^%{TIMESTAMP_ISO8601:timestamp} %{NOTSPACE:name} %{WORD:level} %{SPACE} %{GREEDYDATA:message}$" }
overwrite => [ "message" ]
}
}
这是可行的,它解析我的日志,但根据Kibana的说法,时间戳值是以数据类型string
输出的
logstash@timestamp字段的数据类型为date
grok文档说明可以指定数据类型转换,但只支持int和float:
如果希望转换语义的数据类型,例如更改
字符串设置为整数,然后用目标数据类型作为后缀。对于
示例%{NUMBER:num:int},它将num语义从
字符串转换为整数。目前唯一受支持的转换是int
和浮动
这表明我应该将其保留为字符串,但是,如果索引支持datetime值,为什么不希望它正确存储并作为datetime排序呢?可以,但需要另一个过滤器将其转换为date
filter {
date {
match => [ "timestamp", ISO8601 ]
}
}
通常的用法是这样设置@timestamp
字段。但是,如果要对另一个字段执行此操作,并且不使用@timestamp
:
filter {
date {
match => [ "timestamp", ISO8601 ]
target => "target_timestamp"
}
}
这将为您提供一个名为
target\u timestamp
的字段,该字段将包含您要查找的ElasticSearch数据类型。谢谢!您能告诉我设置@timestamp而不创建新字段的常用用法吗?这就是我想要的。@clay,这是我的第一个例子。target=>“@timestamp”
是隐式的。谢谢