Elasticsearch 条件字段为 date 类型时注意事项

背景

好一阵儿没有写 Elasticsearch 检索代码了,本周弄了一下,又回忆起一些坑点,记录一下。第一个就是 Elasticsearch 的字段类型,date 类型的字段设置查询条件时,参数值设置时,字符串和时间戳两种形式查询结果有差异,温故一下。

Elasticsearch 针对 date 类型字段设置查询条件

对一个索引中的 date 类型字段设置 RangeQuery 条件,查询 2025-12-21 至 22 日之间的数据,时间格式的字符串和时间戳之间的转化关系如下:

当传入时间戳时,查询结果总数为 8871:

当传入与条件字段 format 一致的时间字符串时,统计结果是8676:

问题分析

二者相差几十条,获取查询结果比对,发现传入时间戳时,结果中有不符合条件的数据。

根源是 Elasticsearch 存储 date 类型的值时,使用的 UTC 时间戳,而我们传入参数使用北京时间,直接查询数据晚了 8小时,调整时间戳范围 +8 小时后,两种统计结果就一致了:

结论:如果使用时间戳参数,必须注意时区,检索条件需要加8小时。

Java 解析特殊时间

解析一个不常见的时间字符串 Dec 24 14:07:35 2025,正确的解析方法如下,而且别想设置 Locale.ENGLISH 属性。

bash 复制代码
String dateString = "Dec 24 14:07:35 2025";
SimpleDateFormat sdf = new SimpleDateFormat("MMM dd HH:mm:ss yyyy", Locale.ENGLISH);
try {
    Date date = sdf.parse(dateString);
    System.out.println("解析后的日期: " + date);
} catch (ParseException e) {
    e.printStackTrace();
}
相关推荐
志栋智能20 分钟前
超自动化巡检,如何成为业务稳定的“压舱石”?
大数据·运维·网络·人工智能·自动化
岁岁种桃花儿29 分钟前
Flink从入门到上天系列第二十五篇:Flink和Kafka连接时的精准一次性
大数据·flink·kafka
旗讯数字31 分钟前
服装吊牌智能识别+结构化抽取+国标合规审查|旗讯数字解决方案
大数据·人工智能
素心如月桠44 分钟前
Classification Codes-2 填写规范(Ariba/cXML/ 工业采购场景专属)
大数据
赵谨言1 小时前
基于YOLOv5的海棠花花朵检测识别:文献综述与研究展望
大数据·开发语言·经验分享·python
jkyy20141 小时前
健康有益健康监测座舱:以科技之力,定义出行健康新标杆
大数据·人工智能·物联网·健康医疗
weixin199701080161 小时前
“迷你京东”全栈架构设计与实现
java·大数据·python·数据库架构
菜鸡儿齐1 小时前
MapReduce-源码学习
大数据·学习·mapreduce
大傻^1 小时前
Spring AI Alibaba MCP协议实战:模型上下文协议集成与工具调用
java·人工智能·后端·spring·elasticsearch·springaialibaba
1688red1 小时前
基于Canal实现MySQL到Elasticsearch的数据同步
数据库·mysql·elasticsearch