java类中date类型数据通过fastjson写入ElasticSearch(版本:7.8.1)文档中,如何让其保持date类型的格式,而不是一串long类型的数字

特别申明:
本文初衷是技术分享,部分解决方法来自两位大佬的文章,均在文中赋对应原文网址。感谢大佬的分享。

1. 问题描述:

需求:

需要将实体类中的数据加入到ElasticSearch中,并且其中java类中有Date类型的对象,ElasticSearch对应的属性也是Date类型。
现在要求将Date类型属性在ElasticSearch中,
以 date类型属性judgementDate以"yyyy-MM-dd"格式存储
在这里插入图片描述
date类型属性createTime以"yyyy/MM/dd HH:mm:ss"格式存储
在这里插入图片描述

问题展现:

属性judgementDate是Date类型的,然后赋值"2016-6-19"
在这里插入图片描述
属性createTime是Date类型的,赋值当前时间
在这里插入图片描述
按道理说用fastjson转化为对应相同内容的字符串类型对象。
但是实际打印出来的两个属性均是一串数字:

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
createTime也被转化成为 Long 类型 对象。
在这里插入图片描述

2. 解释现象:

date类型被fastjson变为long类型一串数字
在map转换fastjson时date类型问题
map.put(“entity”,JSON.parseObject(JSON.toJSONString(stkChkModel)));
map中的date类型会被转为long类型的一长串数字。
fastjson会默认把date类型传唤为long。

3. 解决办法:

原文链接
在实体的属性上加注解@JSONField(format = “yyyy-MM-dd”)
在这里插入图片描述
@JSONField(format = “yyyy/MM/dd HH:mm:ss”)
private Date updateTime;
在这里插入图片描述

ElasticSearch构建索引时,需要把日期字段的类型设置为date类型。并且要设置格式化format。
date 的格式类型必须是 4种类型
在这里插入图片描述
注意:如果写 2015-03-01 12:00:00 这是格式是无效的。 必须是y/m/d ,带斜杠的

原文链接
设置操作:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值