Splunk 子搜索17 Mar 2025 | 5 分钟阅读 在本节中,我们将学习 Splunk 平台中的 子搜索。 子搜索是 Splunk 搜索中非常重要的组成部分,用于在我们的数据池中有效地搜索数据。我们将通过不同的示例学习如何使用子搜索,以及如何改进我们的子搜索,以及如何轻松地进行子搜索。 使用子搜索子搜索是用于缩小我们正在查找的事件范围的搜索。 子搜索结果将用作主搜索或外部搜索的参数。 在主搜索中,子搜索用方括号括起来并首先进行评估。 让我们找到在线商店 Buttercup Games 上最常见的购物者,以及该购物者购买的商品。 以下示例说明了执行子搜索的有用之处。 示例 1 说明了如何在不进行子搜索的情况下找到最频繁的购物者。 示例 2 显示了子搜索如何找到最频繁的购物者。 示例 1:不使用子搜索的搜索我们想找到最频繁的购物者以及该购物者在在线商店 Buttercup Games 上购买的商品。我们将使用 top 命令来返回最持久的购物者。
sourcetype=access_* status=200 action=purchase | top limit=1 clientip 在此,limit=1 参数指定返回 1 个值。 clientip 参数指定要返回的字段。 ![]() 在 Splunk 中,此搜索返回一个 clienttip 值 87.194.216.51 以识别 VIP 购物者。 该搜索还返回一个百分比和一个计数。 这些是 top 命令返回的默认字段。
sourcetype=access_* status=200 action=purchase clientip=87.194.216.51 | stats count, distinct_count(productId), values(productId) by clientip 此搜索将多个统计函数与命令 Stats 一起使用。 函数 separct count() 的别名是 dc()。 此搜索使用 count () 函数为 VIP 购物者提供总购买量。 dc () 函数是函数 separct count。 使用此功能来计算购物者购买的不同或独特产品的数量。 values 函数用作多值字段以显示不同的产品 ID。 这种方法的缺点是,每次要构建此表时,我们都将运行两次搜索。 在每个时间范围内,顶级购买者不太可能是同一个人。 示例 2:在 Splunk 中使用子搜索进行搜索我们将开始我们的第一个要求,以识别在线商店 Buttercup Games 上最频繁的单个购物者。
sourcetype=access_* status=200 action=purchase | top limit=1 clientip | table clientip 在此,此搜索返回最频繁的购物者的 clientip,clientip=87.194.216.51。 此搜索与示例 1 的步骤 1 中的搜索几乎相同。 区别在于最后一个管道指令,table clientip,它在一行中显示有关 clientip 的详细信息。 因为使用 table 命令,我们仅指定了 clientip 字段,所以这是唯一返回的字段。 从输出中,将丢弃 top 命令生成的计数和百分比字段。 我们在相同的数据上运行搜索,以查看购物者订购了什么。 我们提供最常见的购物者搜索结果作为购买的搜索条件之一。 在 Splunk 中,子搜索用方括号 [] 括起来,并在读取搜索条件时首先进行评估。
sourcetype=access_* status=200 action=purchase [search sourcetype=access_* status=200 action=purchase | top limit=1 clientip | table clientip] | stats count, distinct_count(productId), values(productId) by clientip 在此代码中,由于 top 命令返回 count 和 percent 字段,因此 table 命令仅保留 clientip 值。 如果我们在相同的时间范围内运行它,这些结果将与示例 1 中两个搜索的结果匹配。 如果我们调整时间段,我们可能会看到不同的结果,因为对于顶级购买客户而言,这将是不同的。 注意:此子搜索性能取决于多少个不同的 IP 地址与 status=200 AND action = purchase 匹配。 top 命令将必须跟踪所有这些地址,然后才能返回前 1 个,如果存在数千个单独的 IP 地址,则会产生影响。 默认情况下,子搜索最多可以返回 10,000 个结果,并且最长运行时间为 60 秒。 在大型制造环境中,此示例中的子搜索可能会在完成之前超时。 最好的选择是重写查询,以限制子搜索必须处理的事件数量。 或者,可以增加最大结果数和最大运行时间参数。使搜索语法更易于阅读。 阅读子搜索和冗长的复杂搜索可能具有挑战性。 为了使搜索栏中的搜索语法更易于阅读,我们应将自动格式化添加到搜索语法中。 要将自动格式化应用于搜索,请使用以下键盘快捷键。
![]() 下一个主题Splunk 搜索宏 |
我们请求您订阅我们的新闻通讯以获取最新更新。