1. search - 用于过滤事件
[search
...
]
# 在默认情况下,所有搜索都隐含了 search 命令
2. index - 用于指定搜索的索引
index = "xxx"
# 如果不指定索引,Splunk 会在所有可访问的索引中搜索
3. | - 管道符:将一个命令的输出作为另一个命令的输入
| where type == "result"
# 需要确保管道前后的命令逻辑上是连贯的
4. stats - 用于聚合数据
| stats values(nums) as num
| stats first(value) as max_value
| stats sum(num) as nums
# stats 命令后面通常跟聚合函数,如 count, sum, avg 等
5. eval - 用于计算表达式并将结果赋值给新字段
| eval version = split(version,",")
| eval version = mvindex(version,0)
# 拓展:加减乘除运算
| eval sum = field1 + field2 # 加
| eval difference = field1 - field2 # 减
| eval product = field1 * field2 # 乘
| eval quotient = field1 / field2 # 除
| eval remainder = field1 % field2 # 取余数
| eval power = pow(field1, field2) # 幂 field1 的 field2次幂
6. fields - 用于指定需要显示的字段
| fields version, status
# 移除不必要的字段可以提高搜索效率
7. top - 用于找出最常见的值
| top messageType limit=5
# 会返回table 包含 messageType count percent(出现率)
# limit 可以限制返回的结果数量
8. rare - 用于找出最不常见的值
| rare messageType limit=5
# 同上,会返回table 包含 messageType count percent(出现率)
# limit 可以限制返回的结果数量
9. table - 用于格式化搜索结果为表格
| table host, status
# table 命令后面跟的字段名决定了表格的列
10. rex - 使用正则表达式提取字段
| rex field=Submit_Date "^(?<year_month>\d{4}-\d{2})"
# 表示匹配字段为Submit_Date,year_month为生成字段名,\d{n}为匹配n个数字 \d{4}-\d{2}则表示 xxxx-xx 即年-月
11. append - 将一个搜索结果追加到另一个搜索结果后面
index=web_logs
| append [search index=error_logs]
# 这会增加结果集的大小,可能影响性能,适用于结果集较小的情况
12. join - 根据共同字段合并两个搜索结果
| join type=outer host [search index=error_logs]
# type=left 相当与SQL中 left join(左连接),保留左侧(主搜索结果)的所有记录,即使右侧没有匹配项
13. sort - 对事件或结果进行排序
| sort -count
# 默认正序排列,加 - 倒序排列
14. head/tail - 获取搜索结果的前几个或后几个事件
| head 10
| tail 10
# 保留前10/后10个结果
15. dedup - 删除搜索结果中的重复事件
| dedup host
# 去重
16. fillnull - 用自定义值填充空字段
| fillnull value=NA status
# 以NA填充空值
17. mvexpand - 将多值字段展开为多个事件
| mvexpand item
# 将单表格内一行一行的字段拆开
18. where - 条件语句
| where counts > 1000
# 书写过滤条件
19. xyseries - 将事件转换为 X-Y 系列,用于图表
| xyseries X Y Num
# X为x轴,Y为y轴,Num为x-坐标点值
20. accum - 计算累计总和
| accum Total_type as cumulative_total_type
# 创建一个新字段,其中包含累积总数
21. chart - 创建统计图表
| chart count(Plan_Status) over Dept by Plan_Status
# over Dept指定了图标的X轴
# by Plan_Status 表示根据plan_status的不同值分为不同的系列
# count(Plan_Status) 计算了plan_status的数量
22. crawl - 从网页或文本文件中提取数据
| crawl start_url="http://www.baidu.com"
# 用于从网页中提取数据,需要网络访问权限
23. fields - 显示或隐藏指定的字段
| fields + host, - status
# 使用 + 或 - 来显示或隐藏字段
24. reverse - 反转事件的顺序
| reverse
# 让最新的事件最先显示
25. strptime - 将字符串的值转换为时间对象
| strptime(Submit_Time, "%Y/%m/%d %H:%M")
| eval Submit_Time = strftime(strptime(Submit_Time, "%Y/%m/%d %H:%M"), "%Y/%m")
# 将格式为 “年/月/日 时:分” 的字符串转换为时间对象
# 将时间对象格式化为 “年/月” 格式的字符串,并赋值给Submit_Time
26. values - 获取唯一值
| stats values(GEN)
# 获取GEN的唯一值
27. like - 模糊匹配
| like (name,"zeng%")
# 能够匹配的格式如:zeng_nb
28. streamstats - 累计统计信息
| streamstats sum(field_name) as cumulative_field_name
# 统计搜索开始到当前事件的 field_name 字段值的累计总和
29. spath - 提取/处理嵌套数据
| spath path="data.detail.detail_info" output=detail_info
# 提取 detail_info 字段,便于后续处理
30. mvzip - 合并多个字段
| eval combine = mvzip(Case_Name,Result)
# 合并两个字段,以 , 连接(只能两两使用)
| eval combine = mvzip(case_name,case_pass,"__")
# 默认以 , 连接,可以自定义连接符
31. rename - 重命名字段
| rename old_field_name as new_field_name
# 以指定名字替换原名
32. replace - 替换字段值
| replace "原字段值" with "新字段值" in "字段名"
# 替换指定字段内的值为指定新字段值
33. split - 分割字段
| eval combine=split(combine,",")
# 以 , 分割指定字段 形成多值字段
34. mvindex - 按索引取值
| eval Result = mvindex(combine,1)
# 将多值字段combine索引为1的字段赋值给Result
35. round - 保留小数
| eval Pass_Rate = round((Pass/(Pass+Fail))*100,3)
# round(X,n) 表示对X保留n位小数;
36. >/< - 过滤数据大于或小于某个值的范围
index=你的索引名称 duration > 2000
# 过滤了在这个索引下 duration > 2000 的数据
37. mvfilter - 用于过滤多值字段中的值
| eval fail_reasons = mvfilter(fail_reasons != "Pass")
# 过滤掉多值字段fail_reason中等于"Pass"的值,只保留不等于"Pass"的值
38. mvjoin - 用于连接所有值成为一个字符串
| eval fail_reason = mvjoin(fail_reasons, "__")
# 将 fail_reasons 字段中的所有值连接成一个字符串,并使用"__"作为分隔符