我正在使用ELK堆栈来保存自定义事件。我推送的事件可能包含也可能不包含名为feed.name
的字段。
我正在使用此字段动态设置索引,因此如果它不存在,我想在将其发送到Elastic之前将其设置为unknown
。
以下是我的完整配置:
input {
http{
host => "XXXXXXXXX"
port => xxxx
codec => "json"
}
}
filter{
if ![feed.name]{
mutate { add_field => { "feed.name"=> "unknown" }}
}
if [source.asn]{
mutate { convert => {"source.asn" => "string"}}
}
if [destination.asn]{
mutate { convert => {"destination.asn" => "string"}}
}
}
output {
elasticsearch {
hosts => ["xxxxxxxxx:XXXX"]
index => "l-%{feed.name}-%{+YYYY.MM.dd}"
}
}
这是我的问题:当没有设置feed.name
时,Logstash会正确设置它,一切都很好。但是,如果该字段存在,则该事件似乎被删除。
这里出现了两个问题:这个行为是如何解释的?而且,我怎样才能使它工作(或者有任何变通方法)?