Logstash kv 过滤器

Logstash kv filter

我有一个格式如下的文件:

10302\t<document>.....</document>   
12303\t<document>.....</document>   
10054\t<document>.....</document>   
10034\t<document>.....</document>   

如您所见,有两个值由制表符分隔。我需要

是否可以使用 kv 过滤器将两个值分开?理想情况下,对于每一行,我应该以这样的文档结束:

id:10302       
msg:<document>....</document>

我可以使用 grok 过滤器,但我想避免使用任何正则表达式,因为字段检测非常简单,并且可以通过简单的键值逻辑来完成。但是,使用普通的 kv 检测我以以下结尾:

"10302": <document>.....</document>   
"12303": <document>.....</document>   
"10054": <document>.....</document>   
"10034": <document>.....</document>  

这不是我想要的。

据我所知,不可能将 kv 用于您想做的工作,因为没有可能的 id 键(10302、10303、10304...)。没有可能的密钥,因为在 id 之前没有任何内容。

假设每个 id + 文档都在同一行,这个 grok 配置会起作用:

grok {
  match => { "message" => "^%{INT:ID}\t%{GREEDYDATA:msg}"}
}