首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >弹簧数据弹性搜索长到局部时间转换误差

弹簧数据弹性搜索长到局部时间转换误差
EN

Stack Overflow用户
提问于 2020-09-16 07:47:45
回答 2查看 2.2K关注 0票数 2

我有以下映射

代码语言:javascript
复制
@Document(indexName = "some-index")
@Data
public class ElasticDocument {

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

    @Field(type = FieldType.Date, format = DateFormat.custom)
    @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "uuuu-MM-dd'T'HH:mm:ss.SSS")
    private LocalDateTime issuedTimestamp;

}

以下存储库

代码语言:javascript
复制
@Repository
public interface DocumentRepository extends ElasticsearchRepository<ElasticDocument, String> {

}

但是,spring数据弹性搜索4.0.3中的以下查询会引发一个转换错误:

代码语言:javascript
复制
Page<ElasticDocument> elasticDocuments = documentRepository.findAll(PageRequest.of(0, 10));

MappingElasticsearchConverter.java:290Type LocalDateTime of property ElasticDocument.issuedTimestamp是一个TemporalAccessor类,但既没有定义日期类型的@Field注释,也没有注册的读取转换器!不能从Elasticsearch中的复杂对象映射它![没有发现能够从[org.springframework.core.convert.ConverterNotFoundException:类型转换为java.time.LocalDateTime类型的转换器]

我正在使用elasticsearch 7.9.1和spring data elasticsearch 4.0.3.RELEASE,根据我从spring data elasticsearch 4.x开始的理解,只要我在映射时添加了Field注释,我们就不需要创建自定义转换。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-09-16 08:12:58

您需要在@Field注释中添加自定义格式的模式。

代码语言:javascript
复制
@Field(type = FieldType.Date, format = DateFormat.custom, pattern = "uuuu-MM-dd'T'HH:mm:ss.SSS")
票数 3
EN

Stack Overflow用户

发布于 2022-10-09 16:33:01

由于弹簧数据弹性版本4.2,dateformat.custom被废弃.您可以在date_hour_minute_second_xxx中使用任何一个枚举org.springframework.data.elasticsearch.annotations.DateFormat。E.g

代码语言:javascript
复制
    @Field(type = FieldType.Date, format = DateFormat.date_hour_minute_second_millis)
    private LocalDateTime createdDate;
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63915417

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档