首页 > 解决方案 > 忽略logstash剖析中字段周围的内容

问题描述

我是 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 字段。但是如何忽略 Division_id 字段周围的内容,这样无论内容是什么,我都只能得到 partition_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 ]]]

非常感谢任何帮助。谢谢你。

标签: elasticsearchlogstash

解决方案


您可以使用空的跳过字段。

例如,像这样:

DESTINATION=mb/cad/division/%{division_id}/type/%{},

您还可以使用命名的跳过字段。

DESTINATION=mb/cad/division/%{division_id}/type/%{?skipped_field},

两者都会做同样的事情,匹配字符串,但忽略它,如果你想给它一个名字,第二个只是帮助你知道被跳过的内容。


推荐阅读