gpt4 book ai didi

java - Spring Boot 和 ElasticSearch 文档中日期转换异常

转载 作者:行者123 更新时间:2023-12-03 08:10:55 27 4
gpt4 key购买 nike

当我运行 Spring Boot 代码(带有 ElasticSearch)时,出现错误。

我想列出我的elasticsearch车辆文档中所有存在的元素

org.springframework.data.elasticsearch.core.convert.ConversionException: Unable to convert value '2022-01-01' to java.util.Date for property 'created'

我试过thisthis链接。

但没有成功。

如何解决这个问题?

以下代码是我的 Vehicle 类。

@Getter
@Setter
@AllArgsConstructor
@NoArgsConstructor
@Document(indexName = Indicies.VEHICLE_INDEX)
public class Vehicle {

@Id
@Field(type = FieldType.Keyword)
private String id;

@Field(type = FieldType.Text)
private String number;

@Field(type = FieldType.Text)
private String name;

@Field(type = FieldType.Date, format = DateFormat.date, pattern = "yyyy-MM-dd'T'HH:mm:ssz")
private Date created;

}

以下接口(interface)是我的VehicleRepository接口(interface)

public interface VehicleRepository extends ElasticsearchRepository<Vehicle, String> {

Page<Vehicle> findAll();

}

以下代码是我的 getList 服务方法

    public List<Vehicle> getVehicleList() {
return vehicleRepository.findAll().getContent();
}

以下代码是我的车辆 Controller 端点

    private final VehicleService vehicleService;

@GetMapping("/vehicle-list")
public List<Vehicle> getVehicleList() {
return vehicleService.getVehicleList();
}

最佳答案

存储在索引中的日期似乎是本地日期(“2022-01-01”,无时区,无时间戳)。 java.util.Date 是 UTC 时区的即时时间。您无法将仅日期字符串转换为日期。您的模式字符串包含的时间也与该字符串不匹配。

并且不要使用古老的 java.util.Date 类,而是使用自 Java 8 以来可用的 java.time 包中的类。

你应该使用

@Field(type = Date, format = DateFormat.date)
LocalDate created;

并重新创建索引以调整映射。

关于java - Spring Boot 和 ElasticSearch 文档中日期转换异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70840905/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com