为了账号安全,请及时绑定邮箱和手机立即绑定

ElasticSearch 日期转换为 Java LocalDateTime 失败

ElasticSearch 日期转换为 Java LocalDateTime 失败

慕标5832272 2022-06-30 11:27:27
我有一个从 ElasticSearch 索引中读取数据并进行处理的微服务。该索引有一个日期字段,我无法将日期字段数据加载到文档实体中。这是我正在尝试实现的快照。指数"date_created": {  "type": "date"}将日期存储为"date_created": "2015-07-02T14:56:51.000Z"我的实体类@Data@NoArgsConstructor@AllArgsConstructor@Document(indexName = "account", type = "doc")public class Account implements Serializable {...    @JsonProperty("date_created")    @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd'T'HH:mm:ss.SSSZ")    @JsonSerialize(using = LocalDateTimeSerializer.class)    @JsonDeserialize(using = LocalDateTimeDeserializer.class)    private LocalDateTime dateCreated;...}在运行时从 ElasticSearch 存储库获取记录时出现的错误如下nested exception is org.springframework.data.elasticsearch.ElasticsearchException: failed to map source ...java.time.format.DateTimeParseException: Text '2002-08-05T04:00:00.000Z' could not be parsed, unparsed text found at index 23有没有办法解决这个问题?我将尝试如下更改索引定义和 JsonFormat,但我不确定这是否可行。我提前询问是因为我需要时间来实施索引的更改。索引更改我稍后会尝试。"date_created": {  "type": "date",  "format": "yyyy-MM-dd'T'HH:mm:ss.SSS"}json格式改变@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd'T'HH:mm:ss.SSS")非常感谢您的帮助。
查看完整描述

2 回答

?
幕布斯7119047

TA贡献1794条经验 获得超8个赞

我如上所述重新创建了索引。但是,在创建索引后,logstash 开始无法在索引中抽取数据。在流内修复数据可能代价高昂。因此,我恢复到原始索引。

什么真正解决了我的问题?我对@JsonFormat 的模式做了一个小的改变,它成功了。

@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd'T'HH:mm:ss.SSSZ")

@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd'T'HH:mm:ss.SSS'Z'")

因此,基本上返回的日期中的“Z”是一个字符,而不是日期格式化程序。使用单引号,我告诉格式化程序将其视为字符而不是格式字符串。

希望这可以解决其他人的困惑。


查看完整回答
反对 回复 2022-06-30
?
慕哥9229398

TA贡献1877条经验 获得超6个赞

我遇到了同样的问题:日期值中的“Z”被视为字符,因此日期解析失败。我的解决方案有点不同:


@Field(type = FieldType.Date, format = DateFormat.custom, pattern = "yyyy-MM-dd'T'HH:mm:ss'Z'")

private LocalDateTime dateField;

如果我们不想一次又一次地在不同的字段上重复模式,我们可以尝试集中到转换逻辑。Spring Data Elastic Search 提供了自定义转换功能,查看示例。我们可以编写一个从 String 到 Date 的转换器,并将日期模式放在那里。


查看完整回答
反对 回复 2022-06-30
  • 2 回答
  • 0 关注
  • 333 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信