如果标记不为null,则编辑搜索查询-Splunk



如果令牌不为null但不起作用,我将尝试在splink中向搜索查询添加信息。我有一个名为filtre的输入复选框,如果使用了输入filtre,我想修改我的搜索。

所以,我想做这个

if $filtre$ == null  
index="fortigate" policyid=$policy$  $scr_dest$=$IP$  service=$service$ NOT action = blocked
| stats  values(src_ip) values(dest_ip) values(service) values(action)
else:
index="fortigate" policyid=$policy$  $scr_dest$=$IP$  service=$service$ NOT action = blocked
| stats  values(src_ip) values(dest_ip) values(service) values(action) by  $filtre$ 

我一直在尝试by *by null,使用eval和多搜索

| multisearch 
[search index="fortigate" policyid=$policy$  $scr_dest$=$IP$  service=$service$ NOT action = blocked
| stats  values(src_ip) values(dest_ip) values(service) values(action)
| where like($filtre$ == null ) ]
[search index="fortigate" policyid=$policy$  $scr_dest$=$IP$  service=$service$ NOT action = blocked 
| stats values(src_ip) values(dest_ip) values(service) values(action) by $filtre$
| | where like($filtre$ !=null) ]

什么都不管用。感谢

命令where like($filtre$ == null)不正确。like函数将字段值与SQL模式进行比较,并期望有两个参数,而不是一个布尔表达式。要确定字段是否为null,请使用isnull()isnotnull()函数。

当令牌为空时,使用stats ... by $filtre$将失败,因为by所需的字段将不存在。为了解决这个问题,我们必须在$filtre$为null时使by消失,这可以使用单独的令牌来完成。

设置filtre令牌后,定义另一个令牌(我将通过$调用它(,并在stats命令中使用它。清除$filtre$后,按$取消设置$。

<input type="checkbox" token="filtre">
...
<change>
<condition match="$filtre$==&quot;Enable&quot;">
<set token="by">by $filtre$</set>
</condition>
<condition>
<set token="by"> </unset>
</condition>
</change>
</input>

| stats ... values(action) $by$

最新更新