我想在splunk中使用查询,提取字段列表,然后使用这些结果字段进一步过滤后续的splunk查询。我该怎么做?
答案 0 :(得分:5)
FORMAT命令对此特别有用。这是一个过于简单的例子,但应该让你知道它是如何使用的:
首先,制作您的子搜索,它将为您提供您关注的字段。这是一个有效的例子:
|metadata type=hosts index=_internal | table host | format
尝试自己运行此搜索以查看输出结果。
然后我们将其添加为您的真实搜索的子搜索:
index=foo sourcetype=bar [|metadata type=hosts index=_internal | table host | format]
将为您提供来自索引foo,sourcetype bar以及来自子搜索的每个主机的事件。
这实际上是一个非常强大的命令,因为您可以使用它来动态设置时间范围以及复杂的布尔过滤器。
答案 1 :(得分:0)
一种选择是将数据从第一次搜索传输到下一次搜索,然后您可以进一步过滤结果。希望以下简化的搜索字符串可以为您提供有关如何执行此操作的建议......
index=_internal | head 100 | fields host, sourcetype, source | search sourcetype="splunkd_access"
有关详细信息,建议您阅读Splunk Search Reference
答案 2 :(得分:0)
在Splunk中,可以过滤/处理第一个splunk查询的结果,然后进一步过滤/处理结果以获得所需的输出。
这是Splunk最强大的功能,是其他可视化工具(如Kibana,Tableau)所缺少的。
假设您在索引foo
中有数据,并且提取了诸如名称,地址之类的字段。
现在的名称/地址可以是直接键值对,或者您需要使用正则表达式或Splunk内置功能提取字段从事件中提取。
然后使用名称=“ John”的值进一步过滤,则Splunk搜索将是:
index="foo" | table name, address | where name="John"