如何在Elasticsearch Discover中按用户、应用、环境分组获取日志最值
在Elasticsearch Discover中实现分组聚合获取最早/最晚登录日志
操作步骤
1. 构建三级分组桶
在Discover界面开启左侧的聚合面板(点击顶部"聚合"按钮显示),按以下顺序添加嵌套的桶聚合:
- 点击「添加聚合」→ 选择桶聚合-术语,字段选
username,设置合适的大小(如1000,确保覆盖所有目标用户) - 在
username桶下方点击「添加子聚合」→ 术语,字段选app.name(对应你的"app name"字段) - 在
app.name桶下方点击「添加子聚合」→ 术语,字段选environment
2. 添加时间指标聚合
在聚合面板的最外层,添加两个指标聚合来获取时间范围:
- 点击「添加指标聚合」→ 最小值,选择你的日志时间字段(如
@timestamp),命名为最早登录时间 - 再次点击「添加指标聚合」→ 最大值,同样选择时间字段,命名为
最晚登录时间
这两个指标会自动关联到每一组username+app.name+environment的结果中。
3. 获取对应日志文档(可选)
如果需要查看最早/最晚登录的具体日志内容,在三级分组桶的最内层(environment桶)添加子聚合:
- 点击「添加子聚合」→ Top Hits,设置「大小」为1,在「排序」中添加规则:按时间字段升序,命名为
最早登录日志 - 再添加一个Top Hits聚合,大小设为1,排序规则改为降序,命名为
最晚登录日志
注意事项
- 确保你的时间字段是
date类型,否则min/max聚合无法正确计算时间范围 - 如果目标分组数量较多,调整术语聚合的「大小」参数,避免数据被截断
- 你已设置的
client name、caller class name等过滤器会自动作用于所有聚合逻辑,无需额外配置
内容的提问来源于stack exchange,提问作者elementmg
相关产品推荐
相关产品推荐

