MST

星途 面试题库

面试题:ElasticSearch深度聚合查询在日志分析系统中的应用

在一个日志分析系统中,日志数据包含时间戳、日志级别、请求ID等字段。现在要求通过ElasticSearch聚合查询统计每个请求ID下不同日志级别在一天内的出现次数,并且要按照时间窗口(每小时)进行分组展示。请详细说明实现该功能的聚合查询策略,并编写对应的DSL语句。
35.4万 热度难度
数据库ElasticSearch

知识考点

AI 面试

面试题答案

一键面试
  1. 聚合查询策略
    • 使用时间字段进行按小时的时间桶(date histogram)聚合,以实现按时间窗口(每小时)分组。
    • 在每个时间桶内,针对请求ID进行terms聚合,用于区分不同的请求ID。
    • 在每个请求ID的terms聚合内,再针对日志级别进行terms聚合,统计每个日志级别在该请求ID和时间窗口内的出现次数。
  2. DSL语句
{
    "aggs": {
        "hourly_buckets": {
            "date_histogram": {
                "field": "时间戳字段名",
                "interval": "hour",
                "format": "yyyy - MM - dd HH"
            },
            "aggs": {
                "request_id_terms": {
                    "terms": {
                        "field": "请求ID字段名"
                    },
                    "aggs": {
                        "log_level_terms": {
                            "terms": {
                                "field": "日志级别字段名"
                            }
                        }
                    }
                }
            }
        }
    },
    "size": 0
}

请将上述DSL语句中的“时间戳字段名”、“请求ID字段名”、“日志级别字段名”替换为实际日志数据中的对应字段名称。size: 0表示不返回文档本身,只返回聚合结果。