MST
星途 面试题库

面试题:ElasticSearch单值度量聚合之复杂场景应用

在一个包含用户行为日志的ElasticSearch索引中,日志记录了用户的操作时间和操作类型。现在需要统计每种操作类型下,用户操作时间距离当前时间最近的那个时间点。请设计一个基于单值度量聚合的解决方案,写出详细的查询语句并说明设计思路。
32.5万 热度难度
数据库ElasticSearch

知识考点

AI 面试

面试题答案

一键面试

设计思路

  1. 首先,我们需要从Elasticsearch索引中获取用户行为日志数据。
  2. 然后,利用单值度量聚合中的max聚合来找到每种操作类型下距离当前时间最近的操作时间。这里使用max聚合是因为当前时间是固定的,我们要找的最近时间其实就是操作时间中的最大值(假设操作时间为时间戳类型)。

查询语句

{
    "aggs": {
        "operation_type_stats": {
            "terms": {
                "field": "operation_type.keyword"
            },
            "aggs": {
                "latest_operation_time": {
                    "max": {
                        "field": "operation_time"
                    }
                }
            }
        }
    }
}
  1. terms聚合按照operation_type字段进行分组,将不同操作类型的数据分开。
  2. 在每个操作类型分组内,使用max聚合找到该操作类型下operation_time字段的最大值,即距离当前时间最近的操作时间。

注:上述代码中假设operation_type字段为字符串类型,使用.keyword后缀进行精确匹配。实际应用中请根据具体的映射情况调整。operation_time字段假设为可比较时间的字段类型(如日期类型)。