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

如何在Kibana中筛选message字段内重复的uniqueKey文档

在Kibana中筛选message字段内uniqueKey重复的文档

步骤1:提取message中的uniqueKey字段

你的uniqueKey嵌套在message字段的JSON片段里,需先将其提取为独立字段,两种实现方式:

方式A:创建永久脚本字段

  1. 进入Kibana的Management > Index Patterns,选择你的目标索引模式(如filebeat-6.8.23-*)
  2. 切换到Scripted fields标签,点击Add scripted field
  3. 字段名设为uniqueKey,类型选择String
  4. 在脚本输入框中粘贴以下Painless脚本,用于解析message中的JSON并提取uniqueKey:
String message = doc['message'].value;
// 定位event对应的JSON片段位置
def eventStart = message.indexOf('Received event \'') + 16;
def eventEnd = message.indexOf('\' with headers');
if (eventStart > 0 && eventEnd > eventStart) {
  String eventJson = message.substring(eventStart, eventEnd);
  // 解析JSON并提取uniqueKey
  def json = JsonSlurper.parseText(eventJson);
  return json?.eventData?.user?.uniqueKey;
}
return null;
  1. 保存脚本字段,等待Kibana加载完成后,索引模式将新增uniqueKey字段。

方式B:查询时临时提取(一次性使用)

若无需永久字段,可在Discover/Visualize中通过脚本查询临时提取,但复用性较低,不推荐日常使用。

步骤2:定位重复的uniqueKey值

  1. 进入Kibana的Visualize,创建一个Data Table可视化组件
  2. 选择目标索引模式,在Buckets中添加Split Rows聚合,聚合类型选Terms
  3. 字段选择刚创建的uniqueKey,在Advanced options中设置Minimum document count为2,仅展示出现次数≥2的重复值
  4. 运行可视化,即可查看所有重复的uniqueKey及其出现次数。

步骤3:筛选所有重复uniqueKey对应的文档

方法A:通过可视化快速筛选

  1. 在Data Table中点击任意重复的uniqueKey值,选择Filter for value
  2. 切换到Discover页面,即可看到该uniqueKey对应的所有文档;若需查看全部重复值的文档,可依次添加多个过滤器。

方法B:使用DSL查询批量筛选

  1. 进入Discover页面,点击Add filter旁的Edit query DSL
  2. 输入以下查询语句,将["key1", "key2"]替换为可视化中得到的重复uniqueKey列表:
{
  "bool": {
    "should": [
      {"match": {"uniqueKey": "key1"}},
      {"match": {"uniqueKey": "key2"}}
    ],
    "minimum_should_match": 1
  }
}
  1. 执行查询,即可获取所有重复uniqueKey对应的文档。

注意事项

  • 确保Elasticsearch集群默认启用Painless脚本支持(默认状态为启用)
  • 若message字段格式发生变化,需调整脚本中的字符串截取逻辑,保证能准确提取event的JSON片段
  • 针对大日志量场景,建议先缩小时间范围再操作,提升处理效率

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 23:45:29