我是Elasticsearch和Logstash的新手。我写了下面的代码来解析类似于下面的日志数据。
记录日期:
[[[ LOGTS=2020-07-08 19:23:09, RESULT=P, DESTINATION=mb/cad/division/AB/type/ABCDEFG01, MSGTYPE=ABCDEFG01, MSGORIGIN=BCW1 ]]]
Logstash剖析代码:mapping => {
"message" => "[[[ LOGTS=%{LOGTS}, RESULT=%{RESULT}, DESTINATION=mb/cad/division/%{devision_id}/type/ABCDEFG01, MSGTYPE=%{MSGTYPE}, MSGORIGIN=%{MSGORIGIN} ]]]%{innerMessage}"
}
通过上面的代码行,我得到了devision_id字段。但是如何忽略divide_id字段周围的内容,所以无论内容是什么,我只能获得divide_id。由于我无法指定每种类型的条目。类似的样本日志日期:
[[[ LOGTS=2020-07-08 19:23:10, RESULT=P, DESTINATION=mb/cad/division/BC/type/BVCDEFG01, MSGTYPE=ABCDEFG01, MSGORIGIN=BCW3 ]]]
[[[ LOGTS=2020-07-08 19:23:11, RESULT=P, DESTINATION=mb/cad/division/CD/type/RTCDEFG01, MSGTYPE=ABCDEFG01, MSGORIGIN=BCW9 ]]]
[[[ LOGTS=2020-07-08 19:23:12, RESULT=P, DESTINATION=mb/cad/division/ZZ/type/BCCDEFG01, MSGTYPE=ABCDEFG01, MSGORIGIN=BCE2 ]]]
任何帮助都非常感谢。谢谢。 最佳答案
您可以使用一个空的跳过字段。
例如,如下所示:
DESTINATION=mb/cad/division/%{division_id}/type/%{},
您也可以使用命名的跳过字段。DESTINATION=mb/cad/division/%{division_id}/type/%{?skipped_field},
两者都会做相同的事情,匹配字符串,但是忽略它,第二个字符串只是帮助您知道要给它命名的跳过内容。