如何将匹配的模式摸索到多个字段名称中?
是否可以使用 Grok 解析和分配匹配的模式两次?
最小、完整、可验证的示例
以这个日志行为例:
09/26/2019 基思·米克拉斯
应用此 grok 过滤器:
%{DATE:date}s*%{WORD:first_name}s*%{WORD:last_name}
这会产生:
{
"date": [
[
"09/26/2019"
]
],
"first_name": [
[
"Keith"
]
],
"last_name": [
[
"Miklas"
]
]
}
我需要的是一个像这样的 grok 过滤器:
%{DATE:date}s*%{WORD:first_name,fn}s*%{WORD:last_name,ln}
%{DATE:date}s*%{WORD:first_name&fn}s*%{WORD:last_name&ln}
%{DATE:date}s*%{WORD:first_name|fn}s*%{WORD:last_name|ln}
产生这个:
{
"date": [
[
"09/26/2019"
]
],
"first_name": [
[
"Keith"
]
],
"fn": [
[
"Keith"
]
],
"last_name": [
[
"Miklas"
]
],
"ln": [
[
"Miklas"
]
]
}
您可以使用指定的捕获组包装所需的部分:
%{DATE:date}s*(?<fn>%{WORD:first_name})s*(?<ln>%{WORD:last_name})
^^^^^^ ^ ^^^^^^ ^
输出:
{
"date": [
[
"09/26/2019"
]
],
"fn": [
[
"Keith"
]
],
"first_name": [
[
"Keith"
]
],
"ln": [
[
"Miklas"
]
],
"last_name": [
[
"Miklas"
]
]
}