- es的Date类型默认支持的格式是有限的。
仅支持格式:
"yyyy-MM-dd"
"yyyyMMdd"
"yyyyMMddHHmmss"
"yyyy-MM-ddTHH:mm:ss"
"yyyy-MM-ddTHH:mm:ss.SSS"
"yyyy-MM-ddTHH:mm:ss.SSSZ"
不支持常用的格式:
"yyyy-MM-dd HH:mm:ss"
若要使用上面这种格式,则需要在文档建立时就指定该Date类型接收的格式format:
PUT /crazy
{
"mappings":{
"hetaoyes":{
"properties":{
"uploadTime":{
"type":"date",
"format":"yyyy-MM-dd HH:mm:ss||yyyy-MM-dd||epoch_millis"
}
}
}
}
}
这里指定了3种format,所以上传的日期只需符合这三种的任意一种即可。
- 利用spring data elasticsearch插入日期格式数据的时候,一定要注意日期格式的转换,除此之外,还有日期时间存储的时候要加上8小时,es计算时间跟我们的时间会相差八小时:
具体字段注解如下:
@Field(type = FieldType.Date, format = DateFormat.custom, pattern ="yyyy-MM-dd HH:mm:ss")// 指定存储格式
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern ="yyyy-MM-dd HH:mm:ss", timezone ="GMT+8")// 数据格式转换,并加上8小时进行存储
private String uploadTime;//这里类型是String,进入es就转换为Date类型
设置当前时间为上传时间(UploadTime):
setUploadTime(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()));//括号内为String类型
参考博客:
https://www.cnblogs.com/koushr/p/9498888.html
https://www.jianshu.com/p/cb2e18cfbaab