向Splunk搜索添加约束会产生更多结果行

时间:2012-10-15 09:19:25

标签: nosql splunk

考虑以下两个Splunk搜索:

index=a | join type=inner MyKey [search index=b]

index=a | join type=inner MyKey [search index=b | where MyVal > 0]

值得注意的是,后者的搜索 - 其子搜索具有约束的搜索 - 的结果行数是前者的三倍。

join命令的Splunk documentation page建议语法足够接近SQL join的参数:

  

如果指定的字段对每个字段都是通用的,则使用连接来组合搜索和子搜索的结果。您还可以使用selfjoin命令将表连接到自身。

此代码段与type=inner参数相关:

  

如果指定的字段对每个字段都是通用的,则使用连接来组合搜索和子搜索的结果。您还可以使用selfjoin命令将表连接到自身。

根据这些信息,我假设上面的两个Splunk搜索应该分别等同于以下SQL:

SELECT *
FROM a
INNER JOIN b ON a.MyKey = b.MyKey

SELECT *
FROM a
INNER JOIN b ON a.MyKey = b.MyKey
WHERE b.MyVal > 0

添加约束如何增加结果行数?

有趣的是,以下Splunk搜索会产生第三个​​结果 - 与我在SQL数据库中放入相同数据时的结果相匹配:

index=a | join type=outer MyKey [search index=b | eval hasmatch=1]
| where hasmatch=1

更多说明:

  • MyVal字段在表/索引
  • 中没有重复项
  • 我已经验证Splunk索引中的原始事件与事件计数中的原始源数据和MyVal
  • 的值相匹配
  • props.conf中的相关来源类型配置的唯一搜索时操作是report,以根据transforms.conf中的节提取字段(源数据采用CSV方言) )

有人能在这里给我一些线索吗?就我而言,这种行为是荒谬的。

1 个答案:

答案 0 :(得分:0)

我建议您在官方Splunk论坛(splunk-base.splunk.com)上重新发布此问题。那里有一些非常有用和经验丰富的“Splunkers”(员工,客户,合作伙伴等),它可能是您提问的最好地方。

干杯,

MHibbin