cla*_*lay 2 logstash logstash-grok
我有一个简单的logstash grok过滤器:
filter {
grok {
match => { "message" => "^%{TIMESTAMP_ISO8601:timestamp} %{NOTSPACE:name} %{WORD:level} %{SPACE} %{GREEDYDATA:message}$" }
overwrite => [ "message" ]
}
}
Run Code Online (Sandbox Code Playgroud)
这可行,它解析我的日志,但根据Kibana,时间戳值以数据类型输出string.
logstash @timestamp字段具有数据类型date.
grok文档说您可以指定数据类型转换,但只支持int和float:
如果您希望转换语义的数据类型,例如将字符串更改为整数,则使用目标数据类型将其后缀.例如%{NUMBER:num:int},它将num语义从字符串转换为整数.目前唯一支持的转换是int和float.
这表明我应该把它留作字符串,但是,如果索引支持datetime值,为什么你不希望它正确存储并可以作为日期时间进行排序?
你可以,但是你需要另一个过滤器来将它转换为日期.
filter {
date {
match => [ "timestamp", ISO8601 ]
}
}
Run Code Online (Sandbox Code Playgroud)
通常的用法是以@timestamp这种方式设置字段.但是如果你想把它带到另一个领域而不@timestamp管它:
filter {
date {
match => [ "timestamp", ISO8601 ]
target => "target_timestamp"
}
}
Run Code Online (Sandbox Code Playgroud)
这将为您提供一个名称target_timestamp将具有您正在寻找的ElasticSearch数据类型的字段.
| 归档时间: |
|
| 查看次数: |
7095 次 |
| 最近记录: |