我使用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,但它似乎没有完成这个技巧。有人可以帮忙吗?
感谢
答案 0 :(得分:1)
要使用自己的ObjectMapper,您需要实现允许注入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