MST

星途 面试题库

面试题:ElasticSearch中日期数学格式在API中的常见应用场景

请举例说明在ElasticSearch API中,日期数学格式主要会应用在哪些查询场景下,并给出相应的示例查询语句,比如按时间范围查询最近一周的数据。
49.2万 热度难度
数据库ElasticSearch

知识考点

AI 面试

面试题答案

一键面试

1. 按时间范围查询

  • 场景:查询过去或未来特定时间段内的数据,如最近一周、一个月内的数据等。
  • 示例:查询最近一周的数据
{
    "query": {
        "range": {
            "timestamp": {
                "gte": "now-1w",
                "lt": "now"
            }
        }
    }
}
  • 解释now 代表当前时间,now-1w 表示当前时间往前推一周。gte 表示大于等于,lt 表示小于。

2. 按时间间隔聚合

  • 场景:按一定时间间隔对数据进行分组聚合,比如按天、周、月统计数据量等。
  • 示例:按天统计最近一个月内每天的数据量
{
    "aggs": {
        "daily_data_count": {
            "date_histogram": {
                "field": "timestamp",
                "calendar_interval": "day",
                "extended_bounds": {
                    "min": "now-1M",
                    "max": "now"
                }
            }
        }
    }
}
  • 解释date_histogram 用于按日期进行直方图聚合,calendar_interval 设置为 day 表示按天聚合,extended_bounds 定义了聚合的时间范围是最近一个月。

3. 动态时间范围过滤

  • 场景:根据不同条件动态调整时间范围进行数据过滤。
  • 示例:假设索引中有一个表示事件类型的字段 event_type,对于 type1 事件查询最近 3 天的数据,对于 type2 事件查询最近 7 天的数据
{
    "query": {
        "bool": {
            "filter": [
                {
                    "match": {
                        "event_type": "type1"
                    }
                },
                {
                    "range": {
                        "timestamp": {
                            "gte": "now-3d",
                            "lt": "now"
                        }
                    }
                }
            ]
        }
    }
}
  • 解释:通过 bool 查询结合 match 匹配事件类型,同时利用日期数学格式设置对应的时间范围过滤数据。如果是 type2 事件,将 now-3d 改为 now-7d 即可。