如何解决如何使用grok模式从同一输入行中获取多个相似模式的条目?
我知道grok模式,并能够使用具有过滤器和grok模式的logstash配置文件来解析并将数据存储到弹性搜索中。
例如: 如果数据输入行是:
Start-field1|field2|field3
然后 正在解析field1,field2,field3,并将其成功存储到弹性搜索中。
但是现在我有如下输入行:
Start-field1|field2|field3#Start-field1|field2|field3#Start-field1|field2|field3
表示在同一输入行中多次出现所需的模式,其中开始作为模式的开始,而#在所有必需的模式中。
有没有办法获取所有此类字段并存储到弹性搜索中?
解决方法
您可以根据需要使用(?:case1|case2)
。在每种情况下,您都可以使用以下相同的模式:(?:|Start-your_pattern) (?:|Start-your_pattern) (?:|Start-your_pattern)
还要多次使用相同的字段名称。这样,您可以将字段及其所有值存储起来。这是通过多次使用%{DATA:field1},%{DATA:field2} and %{DATA:field3}
来完成的。
对于此示例:
Start - John 5 apples # Start - Joe 10 beers # Start - Max 2 eggs
使用此模式:
Start - %{DATA:field1} %{DATA:field2} %{DATA:field3} (?:|# Start - %{DATA:field1} %{DATA:field2} %{DATA:field3}) (?:|# Start - %{DATA:field1} %{DATA:field2} %{DATA:field3})
您将获得以下输出:
{
"field1": [
[
"John","Joe","Max"
]
],"field2": [
[
"5","10","2"
]
],"field3": [
[
"apples","beers","eggs"
]
]
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。