gpt4 book ai didi

java - Spring 数据elasticsearch : serialize joda time

转载 作者:太空宇宙 更新时间:2023-11-04 06:12:21 25 4
gpt4 key购买 nike

我正在使用elasticsearchTemplate.index()将文档索引到elasticsearch服务器中。以下是我的文档的部分内容:

    @Field(type = FieldType.Date, format = DateFormat.basic_date, index = FieldIndex.not_analyzed)
private Date date;

保存文档时,日期将以长格式保存(以毫秒为单位),这是预期的行为。现在,在同一个文档中,我想添加 JodaTime 类型的创建和修改时间戳。以下是时间戳:

    @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd'T'HH:mm:ssZ")
@Field(type = FieldType.Date, format = DateFormat.basic_date, index = FieldIndex.not_analyzed)
private DateTime createdDateTime;

@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd'T'HH:mm:ssZ")
@Field(type = FieldType.Date, format = DateFormat.basic_date, index = FieldIndex.not_analyzed)
private DateTime modifiedDateTime;

现在,当我保存文档时,这两个对象存储为复杂对象(具有诸如monthOfYear、dayOfMonth、hourOfDay 等组件)。但是,我希望这些字段像日期字段一样存储(即长时间戳)。我应该做出哪些改变?

我尝试在我的应用程序中使用 jodaModule 将 ObjectMapper 定义为 bean,但它似乎没有成功。有人可以帮忙吗?

谢谢

最佳答案

要使用自己的 ObjectMapper,您需要实现允许注入(inject) ObjectMapper 的 EntityMapper,

  @Bean
@Autowired
public EntityMapper mapper(ObjectMapper objectMapper) {
return new ConfigurableEntityMapper(objectMapper);
}

然后创建模板

  @Bean
public ElasticsearchOperations elasticsearchTemplate(Client client, EntityMapper mapper) {
return new ElasticsearchTemplate(client, mapper);
}

请参阅此处的示例:https://github.com/spring-projects/spring-data-elasticsearch/wiki/Custom-ObjectMapper

关于java - Spring 数据elasticsearch : serialize joda time,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28541653/

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