如何使用grok模式从同一输入行获取多个相似模式的条目



我知道grok模式,能够使用带有过滤器和grok模式的logstash配置文件解析数据并将其存储到弹性搜索中。

例如:如果数据输入行为:

Start-field1|field2|field3

那么field1、field2、field3正在被解析并成功存储到弹性搜索中,没有任何问题。

但现在我有一个输入行,如下所示:

Start-field1|field2|field3#Start-field1|field2|field3#Start-field1|field2|field3

意味着在同一输入行中多次出现所需模式,Start作为模式的开始,#在所有所需模式中。

有什么方法可以获取所有这些字段并存储到弹性搜索中吗?

您可以根据需要使用(?: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"
]
]
}

试穿一下http://grokdebug.herokuapp.com/

相关内容

  • 没有找到相关文章

最新更新