elasticsearch时间格式DateFormat的含义

枚举(或者英文)formatpattern含义
custom-自定义属性
none-不转化
basic_dateyyyyMMdd基本时间
basic_date_timeyyyyMMdd’T’HHmmss.SSSZ
basic_date_time_no_millisyyyyMMdd’T’HHmmssZ
basic_ordinal_dateyyyyDDD
basic_ordinal_date_timeyyyyDDD’T’HHmmss.SSSZ
basic_ordinal_date_time_no_millisyyyyDDD’T’HHmmssZ
basic_timeHHmmss.SSSZ
basic_time_no_millisHHmmssZ
basic_t_time'T’HHmmss.SSSZ
basic_t_time_no_millis'T’HHmmssZ
basic_week_datexxxx’W’wwe
basic_week_date_timexxxx’W’wwe’T’HHmmss.SSSZ
basic_week_date_time_no_millisxxxx’W’wwe’T’HHmmssZ
dateyyyy-MM-dd
date_houryyyy-MM-dd’T’HH
date_hour_minuteyyyy-MM-dd’T’HH:mm
date_hour_minute_secondyyyy-MM-dd’T’HH:mm:ss
date_hour_minute_second_fractionyyyy-MM-dd’T’HH:mm:ss.SSS
date_hour_minute_second_millisyyyy-MM-dd’T’HH:mm:ss.SSS
date_timeyyyy-MM-dd’T’HH:mm:ss.SSSZZ
date_time_no_millisyyyy-MM-dd’T’HH:mm:ssZZ
hourHH
hour_minuteHH:mm
hour_minute_secondHH:mm:ss
hour_minute_second_fractionHH:mm:ss.SSS
hour_minute_second_millisHH:mm:ss.SSS
ordinal_dateyyyy-DDD
ordinal_date_timeyyyy-DDD’T’HH:mm:ss.SSSZZ
ordinal_date_time_no_millisyyyy-DDD’T’HH:mm:ssZZ
timeHH:mm:ss.SSSZZ
time_no_millisHH:mm:ssZZ
t_time'T’HH:mm:ss.SSSZZ
t_time_no_millis'T’HH:mm:ssZZ
week_datexxxx-'W’ww-e
week_date_timexxxx-'W’ww-e’T’HH:mm:ss.SSSZZ
week_date_time_no_millisxxxx-'W’ww-e’T’HH:mm:ssZZ
weekyear四位周格式xxxx
weekyear_weekxxxx-'W’ww
weekyear_week_dayxxxx-'W’ww-e
yearyyyy
year_monthyyyy-MM
year_month_dayyyyy-MM-dd
### Spring Boot 中集成 Elasticsearch 进行时间格式化的配置 在 Spring Boot 应用程序中集成了 Elasticsearch 后,对于日期字段的时间格式化可以通过多种方式来实现。一种常见的方式是在实体类中标记 `@Field` 注解,并设置相应的格式属性。 #### 使用注解定义时间格式 当创建映射到 Elasticsearch 文档的 Java 实体时,可以在相应字段上应用 `@Field(type = FieldType.Date, format = DateFormat.dateOptionalTime)` 来指定日期格式[^2]: ```java import org.springframework.data.annotation.Id; import org.springframework.data.elasticsearch.annotations.Document; import org.springframework.data.elasticsearch.annotations.Field; import org.springframework.data.elasticsearch.annotations.FieldType; @Document(indexName = "articles") public class Article { @Id private String id; @Field(type = FieldType.Text) private String title; @Field(type = FieldType.Date, format = DateFormat.date_optional_time) private Date publishDate; // getters and setters... } ``` 上述代码片段展示了如何声明一个名为 `publishDate` 的字段作为带有可选时间部分的标准 ISO8601 日期字符串处理。 #### 自定义 Jackson Serializer/Deserializer 另一种更灵活的方法涉及自定义序列化器和反序列化器以控制 JSON 转换过程中的具体行为。这允许精确调整输入输出格式而不依赖于默认解析逻辑。为了达到这个目的,可以利用 Jackson 提供的功能扩展点——即编写自己的模块并向其中注册新的组件实例[^4]: ```java import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule; import com.fasterxml.jackson.datatype.jsr310.ser.LocalDateTimeSerializer; import java.time.format.DateTimeFormatter; @Configuration public class AppConfig { @Bean public ObjectMapper objectMapper() { DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); LocalDateTimeSerializer localDateTimeSerializer = new LocalDateTimeSerializer(formatter); JavaTimeModule module = new JavaTimeModule(); module.addSerializer(LocalDateTime.class, localDateTimeSerializer); return new ObjectMapper().registerModule(module); } } ``` 此段配置使得应用程序能够按照预设模式(例如:"yyyy-MM-dd HH:mm:ss")读写 `LocalDateTime` 类型的数据项。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值