grok
grok 命令使用 Grok 模式解析一个文本字段,并将提取的结果附加到搜索结果中。
语法
grok 命令的语法如下:
grok <field> <pattern>
参数
grok 命令支持以下参数。
| 参数 | 必需/可选 | 描述 |
|---|---|---|
<field> |
必需 | 要解析的文本字段。 |
<pattern> |
必需 | 用于从指定文本字段提取新字段的 Grok 模式。如果新字段名已存在,它将覆盖原始字段。 |
示例 1:创建新字段
以下查询展示了如何使用 grok 命令为每个文档创建一个新字段 host。host 字段捕获 email 字段中 @ 符号后的主机名。解析空字段会返回空字符串:
source=accounts
| grok email '.+@%{HOSTNAME:host}'
| fields email, host
该查询返回以下结果:

示例 2:覆盖现有字段
以下查询展示了如何使用 grok 命令覆盖现有的 address 字段,移除其中的街道号码:
source=accounts
| grok address '%{NUMBER} %{GREEDYDATA:address}'
| fields address
该查询返回以下结果:

示例 3:使用 grok 解析日志
以下查询解析原始日志:
source=apache
| grok message '%{COMMONAPACHELOG}'
| fields COMMONAPACHELOG, timestamp, response, bytes
该查询返回以下结果:
| COMMONAPACHELOG | timestamp | response | bytes |
|---|---|---|---|
| 177.95.8.74 - upton5450 [28/Sep/2022:10:15:57 -0700] "HEAD /e-business/mindshare HTTP/1.0" 404 19927 | 28/Sep/2022:10:15:57 -0700 | 404 | 19927 |
| 127.45.152.6 - pouros8756 [28/Sep/2022:10:15:57 -0700] "GET /architectures/convergence/niches/mindshare HTTP/1.0" 100 28722 | 28/Sep/2022:10:15:57 -0700 | 100 | 28722 |
| 118.223.210.105 - - [28/Sep/2022:10:15:57 -0700] "PATCH /strategize/out-of-the-box HTTP/1.0" 401 27439 | 28/Sep/2022:10:15:57 -0700 | 401 | 27439 |
| 210.204.15.104 - - [28/Sep/2022:10:15:57 -0700] "POST /users HTTP/1.1" 301 9481 | 28/Sep/2022:10:15:57 -0700 | 301 | 9481 |
限制
grok 命令有以下限制:
grok命令与parse命令具有相同的限制。