考慮以下兩個Splunk的搜索:添加約束至Splunk的搜索產生多個結果行
index=a | join type=inner MyKey [search index=b]
和:
index=a | join type=inner MyKey [search index=b | where MyVal > 0]
值得注意的是,搜索的是後者 - 搜索其subsearch有一個約束 - 具有結果行的前三倍。
的Splunk documentation page爲join
命令表明,對於參數的緣故,以SQL的join
足夠接近的語義:
聯接用來組合的搜索結果,並subsearch如果指定的字段是共同的每。您也可以使用selfJoin命令將表加入自己。
這個片段是相關的type=inner
說法:
聯接用來組合的搜索結果,並subsearch如果指定的字段是共同的每一個。您也可以使用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
配置爲相關sourcetypes唯一的搜索時操作噸數和值是一個report
以提取在transforms.conf
基於一個節中的字段(源數據是在一個CSV方言)
任何人都可以在這裏給我一些線索嗎?就我而言,這種行爲是無意義的。
我已經發布的問題有太多: http://splunk-base.splunk.com/answers/61942/adding-a-constraint-to-a- subsearch-yield-more-result-rows 不幸的是到目前爲止還沒有迴應。 – Cera