logstash grok时间戳_ISO8601类型?

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的说法,时间戳值是以

我有一个简单的logstash grok过滤器:

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”
是隐式的。谢谢