ES存储的时间问题

1、具体es配置,我没有关注,也可能可以通过配置规避这个问题
我看到的现象是,存入es的数据,经过分词之后,时间会被减少8个小时,所以查询出来展示的时候需要加8个小时

2、线上出了一个buger,时间差了12小时,经查发现
//带时区的时间转换
SimpleDateFormat sf = new SimpleDateFormat(“yyyy-MM-dd\’T\’HH:mm:ss.SSS\’Z\’”);
这个类型的小时HH 被写成了hh,所以24小时制变成了12小时,造成问题
new Date(sf.parse(esData.get(“timestamp”).toString()).getTime() + 8 * 3600 * 1000)

在使用Elasticsearch的Mapper映射实体类时,时间问题涉及到对日期和时间数据类型的处理。在Elasticsearch中,日期和时间可以使用多种格式进行存储和检索。 首先,我们需要在实体类的属性上使用合适的注解来标识该属性是一个日期或时间。对于日期类型,可以使用`@Field`注解,并指定字段类型为`FieldType.Date`,这样可以将日期通过指定的格式进行存储和检索。对于时间类型,可以使用`@Field`注解,并指定字段类型为`FieldType.Text`,同时也可以使用`format`属性来指定时间的格式。 在映射的过程中,我们可以选择使用Elasticsearch提供的默认日期时间格式,如`"yyyy-MM-dd HH:mm:ss"`,也可以根据自己的需求定义对应的格式。需要注意的是,由于日期和时间的校验和转换可能会带来性能上的影响,所以在选择日期时间格式时需要权衡性能和需求。 当对日期和时间进行检索时,可以使用相应的格式将输入的日期时间字符串转换为Elasticsearch所支持的格式,并进行检索。一般情况下,Elasticsearch会将日期和时间类型进行忽略,只比较其毫秒级的数值,所以在检索时需要将输入的日期和时间精确到毫秒级。 总之,ES Mapper映射实体类时间问题涉及到对日期和时间存储、检索和格式转换。通过合适的注解和格式设置,我们可以方便地处理实体类中的日期和时间属性。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值