elasticsearch 基于logstash中转换的unix时间戳的值的索引,elasticsearch,logstash,logstash-grok,logstash-configuration,elasticsearch,Logstash,Logstash Grok,Logstash Configuration" /> elasticsearch 基于logstash中转换的unix时间戳的值的索引,elasticsearch,logstash,logstash-grok,logstash-configuration,elasticsearch,Logstash,Logstash Grok,Logstash Configuration" />

elasticsearch 基于logstash中转换的unix时间戳的值的索引

elasticsearch 基于logstash中转换的unix时间戳的值的索引,elasticsearch,logstash,logstash-grok,logstash-configuration,elasticsearch,Logstash,Logstash Grok,Logstash Configuration,我需要根据UNIX时间戳自历元起秒数字段的值对记录进行索引,但是索引需要采用YYYY-MM-dd的形式。但是时间戳字段的值需要保留UNIX时间戳 所以问题分为两部分 如何在不破坏UNIX时间戳的情况下将时间戳文件转换为YYYY MM dd? 如何将YYYY-MM-dd值应用于索引? 这是我到目前为止所拥有的 input { tcp { port => 5000 } } filter { csv { separator

我需要根据UNIX时间戳自历元起秒数字段的值对记录进行索引,但是索引需要采用YYYY-MM-dd的形式。但是时间戳字段的值需要保留UNIX时间戳

所以问题分为两部分

如何在不破坏UNIX时间戳的情况下将时间戳文件转换为YYYY MM dd? 如何将YYYY-MM-dd值应用于索引? 这是我到目前为止所拥有的

input {
    tcp {
            port => 5000
    }
}

filter {
    csv {
            separator => "  " # <- this white space is actually a tab
            skip_empty_columns => true
            # other fields omitted for brevity
            columns => ["timestamp"]
    }

    #grok {
    #       match => {"indexdate" => "%{NUMBER:timestamp}"}
    #}

    date {
            match => ["timestamp", "YYYY-MM-DD"]
            target => "@timestamp"
    }

    mutate {
            # omitted for brevity
            remove_field => []
    }
}

output {
    elasticsearch {
            hosts => "elasticsearch:9200"
            index => "indexname-%{+YYYY-MM-dd}"
    }
}
我做了几次不同的尝试,但到目前为止运气不好。

只需像这样更改您的日期过滤器,它就会工作。您在日期筛选器中使用的模式应该与您正在分析的字段的模式匹配,因为您有epoch seconds,那么该模式应该是UNIX:

请注意,您可能需要在csv筛选器中添加转换设置,以确保时间戳字段为整数

csv {
   ...
   convert => { "timestamp" => "integer" }
}

嗨@Val,谢谢你的回答。如果可以的话,我有一个后续问题?有没有一种方法可以保留@timestamp的值,使其保持为当前时间?您可以在运行日期筛选器之前将@timestamp复制到另一个字段中。或者,您可以在日期过滤器中使用另一个目标字段,并保留@timestamp be。这些都能用吗?所以我把target=>@timestamp改为target=>@mytimestamp,效果非常好!logstach如何知道在计算此行时使用哪个字段:index=>indexname-%{+YYYY-MM-dd}?它默认使用@timestamp,您无法更改它。但是,您可以为此目的创建一个新字段。见此:
csv {
   ...
   convert => { "timestamp" => "integer" }
}