Elasticsearch 时间范围查询

时间范围查询

简单示例

json 复制代码
GET /_search
{
  "query": {
    "range": {
      "timestamp": {
        "gte": "now-1d/d", // 当前时间的上一天, 四舍五入到最近的一天
        "lte": "now/d" // 当前时间, 四舍五入到最近的一天
      }
    }
  }
}

关于时间的数学表达式(date-math)

Elasticsearch中时间可以表示为now, 也就是系统当前时间, 也可以是以||结尾的日期字符串表示.

在日期之后, 可以选择一个或多个数学表达式:

  • +1h ------ 加1小时;
  • -1d ------ 减1天;
  • /d ------ 四舍五入到最近的一天.

下面是Elasticsearch支持数学表达式的时间单位:

表达式 含义 表达式 含义
y M
w 星期 d
h 小时 H 小时
m 分钟 s

说明: 假设系统当前时间now = 2018-10-01 12:00:00 :

now+1h: now的毫秒值 + 1小时, 结果是: 2018-10-01 13:00:00.
now-1h: now的毫秒值 - 1小时, 结果是: 2018-10-01 11:00:00.
now-1h/d: now的毫秒值 - 1小时, 然后四舍五入到最近的一天的起始, 结果是: 2018-10-01 00:00:00.
2018.10.01||+1M/d: 2018-10-01的毫秒值 + 1月, 再四舍五入到最近一天的起始, 结果是: 2018-11-01 00:00:00

关于时间的四舍五入

官方:时间的四舍五入

对日期中的日、月、小时等 进行四舍五入时, 取决于范围的结尾是包含(include)还是排除(exclude).

向上舍入: 移动到舍入范围的最后一毫秒;

向下舍入: 一定到舍入范围的第一毫秒.

举例说明:

① "gt": " 2014-11-18||/M" ------ 大于日期, 需要向上舍入, 结果是 2014-12-01T00:00:00.000, 也就是不包含整个11月.

② "gte": "2014-11-18||/M" ------ 大于或等于日期, 需要向下舍入, 结果是 2014-11-01T00:00:00.000, 也就是包含整个11月.

③ "lt": "2014-11-18||/M" ------ 小于日期, 需要向上舍入, 结果是2014-10-31T23:59:59.999, 也就是不包含整个11月.

④ "lte": "2014-11-18||/M" ------ 小于或等于日期, 需要向下舍入, 结果是2014-11-30T23:59:59.999, 也就是包含整个11月.

日期格式化范围查询(format)

格式化日期查询时, 将默认使用日期field中指定的格式进行解析, 当然也可以通过format参数来覆盖默认配置.

示例:

json 复制代码
GET website/_search
{
    "query": {
        "range": {
            "post_date": {
                "gte": "2/1/2018", 
                "lte": "2019",
                "format": "dd/MM/yyyy||yyyy" \\这里的||表示或
            }
        }
    }
}

注意: 如果日期中缺失了部分年、月、日, 缺失的部分将被填充为如下默认值:

shell 复制代码
MONTH_OF_YEAR:    01
DAY_OF_MONTH:     01
HOUR_OF_DAY:      23
MINUTE_OF_HOUR:   59
SECOND_OF_MINUTE: 59
NANO_OF_SECOND:   999_999_999

如果format为 yyyy-MM, Elasticsearch 将 2099-12 转成 2099-12-01T23:59:59.999_999_999Z. 没写全的format部分用默认值取代。

参考

【官方】date数学计算
【官方】date的range查询
【官方】format格式
Elasticsearch中如何进行日期(数值)范围查询

相关推荐
CES_Asia6 小时前
立即行动,锁定2026增长引擎:报名CES Asia机器人展,同步押注“具身智能”与亚洲市场
大数据·人工智能·百度·机器人
青软青之LIMS6 小时前
破孤岛 统全局 智未来:King‘s LIMS集团版引领实验室数智化协同新生态
大数据·实验室信息管理系统·实验室数智化管理系统·实验室数字化管理系统·实验室综合管理平台
KG_LLM图谱增强大模型6 小时前
【102页最新综述】AI智能体时代的记忆系统:形式、功能与知识图谱长记忆动态机制全景解析
大数据·人工智能·agent
jkyy20146 小时前
从菜品识别到健康决策:AI技术如何赋能B端智慧饮食管理
大数据·人工智能·科技·健康医疗
Deepoch6 小时前
从“功能机”到“智能体”:服务机器人的认知革命与产业重构
大数据·人工智能·科技·机器人·未来·具身模型·deepoc
ToB营销学堂6 小时前
什么是自动化营销系统?目前有哪些自动化营销系统?
大数据
莫叫石榴姐7 小时前
ast 在 Dify 工作流中解析 JSON 格式数据的深度解析
大数据·网络·安全·json
泰克教育官方账号7 小时前
泰涨知识 | Hadoop的IO操作——压缩/解压缩
大数据·hadoop·分布式
weixin_307779137 小时前
赋能插件,驱动图表:Jenkins ECharts API插件详解
运维·开发语言·自动化·jenkins·echarts
浮不上来7 小时前
人工兔优化算法(ARO)详解:原理、实现与应用
大数据·人工智能·机器学习·优化算法