You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Splunk使用spath查询JSON数组时如何匹配单元素多条件

问题根因

你当前的查询逻辑是判断整个appliedConditionalAccessPolicies数组中存在任意元素的displayName等于policy1,且存在任意元素的result等于failure,两个条件不需要作用在同一个元素上,所以第二条事件因为policy2的result是failure也会被命中,导致返回结果不符合预期。

解决方案

有两种常用的实现方式,按需选择即可:

方案1:数组元素拆行匹配(适合需要后续分析单个策略属性的场景)

index=test
# 提取整个条件访问策略数组到多值字段policy
| spath path="appliedConditionalAccessPolicies{}" output=policy
# 将数组的每个元素拆分为独立的单行事件
| mvexpand policy
# 从单个策略对象中提取名称和结果字段
| spath input=policy path=displayName output=policy_name
| spath input=policy path=result output=policy_result
# 匹配同一策略同时满足两个条件的行
| search policy_name="policy1" policy_result="failure"
# 可选:按原始事件去重,避免同一事件多个匹配策略返回重复结果
| stats values(*) as * by _raw

方案2:多值字段绑定匹配(适合仅做筛选的场景,性能更高)

index=test
# 分别提取所有策略名称和结果为两个多值字段,字段顺序和数组元素顺序一一对应
| spath "appliedConditionalAccessPolicies{}.displayName" output=policy_names
| spath "appliedConditionalAccessPolicies{}.result" output=policy_results
# 按顺序将两个多值字段的元素配对,拼接为「名称=结果」格式的多值字段
| eval policy_pair = mvzip(policy_names, policy_results, "=")
# 直接搜索配对后的字段中存在符合要求的组合即可
| search policy_pair="policy1=failure"

内容的提问来源于stack exchange,提问作者Ashish Gupta

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 18:24:03