结合 splunk 查询中 2 个索引的结果

问题描述

我有一个索引 idx1 和另一个索引 idx2 以及一个需要对其进行匹配的公共列“A”。

我在合并两列中的数据时遇到了困难。 我必须以这样的方式组合数据,如果有重复,那么来自 idx1 的数据必须优先于来自 idx2 的数据;即基本上等同于集合操作 [a+(b-a)]。

我尝试了以下方法:

| set diff  [ search index=idx2 sourcetype=src | dedup A ] [search index=idx1 sourcetype=src | dedup A ]
| stats count BY index A
| table index A

这里我总共得到了 10840 个统计数据,两列都被填满了。

但是当我想显示两个索引中的其他列时,我会得到空列。

执行时:

| set diff  [ search index=1idx1 sourcetype=src | dedup A ] [search index=idx2 sourcetype=src | dedup A ]
    | stats count BY index

我得到的输出为

索引计数 idx1 4791 idx2 6049

谁能帮我我该怎么做??

我什至尝试过这个,但不确定

index=idx1 sourcetype=src
| append [
| set diff  [ search index=idx2 sourcetype=src | dedup A ] [search index=idx1 sourcetype=src | dedup A ]]
    | stats count BY index A
    | table index A

解决方法

如果两种事件类型都有共同的字段,那么您可以使用左连接来组合数据。这并且受到 50,000 个结果的限制。

index=1idx1 sourcetype=src | dedup A 
| join type=outer A [search index=idx2 sourcetype=src | dedup A]
| ...

一种更高效的合并结果的方法是使用 stats 命令,但这不符合索引 A 胜过索引 B 的要求。

,

我尝试过这样的事情:

index=idx1 sourcetype=src
| append [search index=idx2 sourcetype=src ]
| dedup A| table A B C D

idx1 有 4791 个事件

idx2 有 6049 个事件

(idx1-idx2) 有 2590 个事件

(idx2-idx1) 有 3848 个事件

2个索引的并集有8639个事件

2个索引的交集有2201个事件

所以在执行上述查询后,我得到了 8639 个事件

2590+3848+2201=8639

我认为它是正确的...

欢迎任何建议

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...