elasticsearch ElasticSearch-未设置日期类型
我正在尝试麋鹿堆,到目前为止还不错:) 我在解析日期字段并将其发送给ElasticSearch时遇到了一个奇怪的情况。我设法解析这个字段,它实际上是在ElasticSearch中创建的,但它总是以字符串结束。 我试过很多不同的组合。我也尝试过很多人们建议的不同的事情,但我还是失败了 这是我的设置: 来自Filebeat的字符串: [2017-04-26 09:40:33]security.DEBUG:将安全令牌存储在会话中。{“key”:“securitysecured_area”}[] [2017-04-26 09:50:42]请求信息:匹配的路线“home\u logged\u in”。{“路由参数”:{“控制器”:“AppBundle\controller\HomeLoggedInController::showAction”,“区域设置”:“de”,“路由”:“homeloggedin”},“请求uri”:“}[] 日志存储解析部分:elasticsearch ElasticSearch-未设置日期类型,elasticsearch,logstash,logstash-grok,elasticsearch,Logstash,Logstash Grok,我正在尝试麋鹿堆,到目前为止还不错:) 我在解析日期字段并将其发送给ElasticSearch时遇到了一个奇怪的情况。我设法解析这个字段,它实际上是在ElasticSearch中创建的,但它总是以字符串结束。 我试过很多不同的组合。我也尝试过很多人们建议的不同的事情,但我还是失败了 这是我的设置: 来自Filebeat的字符串: [2017-04-26 09:40:33]security.DEBUG:将安全令牌存储在会话中。{“key”:“securitysecured_area”}[] [20
if [@metadata][type] == "feprod" or [@metadata][type] == "feqa"{
grok {
match => { "message" => "%{TIMESTAMP_ISO8601:logdate}" }
}
date {
#timezone => "Europe/Berlin"
match => [ "logdate", "yyyy-MM-dd HH:mm:ss"]
}
}
根据文档,我的@timestamp字段应该被logdate值覆盖。但这并没有发生
在ElasticSearch中,我可以看到正在创建字段logdate,其值为2017-04-26 09:40:33,但其类型为string
我总是从零开始创建索引,我先删除它,然后让日志存储填充它
我需要用实际日期(不是索引日期)覆盖@timestamp,或者用日期类型创建logdate字段。这两种方法都很好除非您明确地将
[@metadata][type]
添加到您没有显示的地方,否则这就是您的问题所在。它不是默认设置的,[type]
是从输入上的“type=>”参数默认设置的
您可以通过一个最小的完整示例来验证这一点:
input {
stdin {
type=>'feprod'
}
}
filter {
if [@metadata][type] == "feprod" or [@metadata][type] == "feqa"{
grok {
match => { "message" => "%{TIMESTAMP_ISO8601:logdate}" }
}
date {
match => [ "logdate", "yyyy-MM-dd HH:mm:ss"]
}
}
}
output {
stdout { codec => "rubydebug" }
}
并运行它:
echo '[2017-04-26 09:40:33] security.DEBUG: Stored the security token in the session. {"key":"securitysecured_area"} []' | bin/logstash -f test.conf
以及获取输出:
{
"@timestamp" => 2017-05-02T15:15:05.875Z,
"@version" => "1",
"host" => "xxxxxxxxx",
"message" => "[2017-04-26 09:40:33] security.DEBUG: Stored the security token in the session. {\"key\":\"securitysecured_area\"} []",
"type" => "feprod",
"tags" => []
}
如果您只使用如果[type]=
。。。它会很好用的
{
"@timestamp" => 2017-04-26T14:40:33.000Z,
"logdate" => "2017-04-26 09:40:33",
"@version" => "1",
"host" => "xxxxxxxxx",
"message" => "[2017-04-26 09:40:33] security.DEBUG: Stored the security token in the session. {\"key\":\"securitysecured_area\"} []",
"type" => "feprod",
"tags" => []
}
[@metadata][type]正在使用filebeat设置类型,因此我知道存储日志的索引。感谢您的解释:)根据本文的讨论:filebeat@metadata字段似乎没有转到logstashIn filebeat:-输入类型:日志路径:mylog.log文档类型:feprod发出feprod作为类型,我在Logstash中使用它来决定存储数据的索引