面试题答案
一键面试设计思路
- 首先,我们需要从Elasticsearch索引中获取用户行为日志数据。
- 然后,利用单值度量聚合中的
max
聚合来找到每种操作类型下距离当前时间最近的操作时间。这里使用max
聚合是因为当前时间是固定的,我们要找的最近时间其实就是操作时间中的最大值(假设操作时间为时间戳类型)。
查询语句
{
"aggs": {
"operation_type_stats": {
"terms": {
"field": "operation_type.keyword"
},
"aggs": {
"latest_operation_time": {
"max": {
"field": "operation_time"
}
}
}
}
}
}
terms
聚合按照operation_type
字段进行分组,将不同操作类型的数据分开。- 在每个操作类型分组内,使用
max
聚合找到该操作类型下operation_time
字段的最大值,即距离当前时间最近的操作时间。
注:上述代码中假设operation_type
字段为字符串类型,使用.keyword
后缀进行精确匹配。实际应用中请根据具体的映射情况调整。operation_time
字段假设为可比较时间的字段类型(如日期类型)。