面试题答案
一键面试- 聚合查询语句:
{
"query": {
"bool": {
"filter": [
{
"range": {
"时间戳": {
"gte": "now-1w"
}
}
},
{
"term": {
"日志级别": "ERROR"
}
}
]
}
},
"aggs": {
"by_service": {
"terms": {
"field": "服务名称",
"size": 10000
},
"aggs": {
"top_error": {
"terms": {
"field": "错误信息",
"size": 1
}
}
}
}
}
}
- 步骤:
- 查询筛选:
- 使用
range
过滤器,通过now - 1w
指定时间范围为过去一周,确保只考虑在这个时间范围内的日志。 - 使用
term
过滤器,指定日志级别
为ERROR
,只关注错误级别的日志。
- 使用
- 聚合操作:
- 外层聚合
by_service
使用terms
聚合按服务名称
进行分组,size
设置为足够大的值以获取所有服务。 - 内层聚合
top_error
使用terms
聚合在每个服务分组内按错误信息
进行分组,并通过size
设置为1,获取出现频率最高的错误信息。最终返回的结果将按服务名称分组,每个服务分组下包含出现频率最高的错误信息及其出现次数。
- 外层聚合
- 查询筛选: