【发布时间】:2017-07-01 08:55:46
【问题描述】:
我正在为 Elasticsearch 使用 Spring Data 支持。这是时间戳字段映射:
@Field(type = FieldType.Date, index = FieldIndex.not_analyzed, store = true,
format = DateFormat.custom, pattern = "yyyy-MM-dd'T'HH:mm:ss.SSSZZ")
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern ="yyyy-MM-dd'T'HH:mm:ss.SSSZZ")
private LocalDateTime timestamp;
这导致 Elasticsearch 中的字段映射如下:
"timestamp":{"type":"date","store":true,"format":"yyyy-MM-dd'T'HH:mm:ss.SSSZZ"}
当我改用 java.util.Date 时,一切正常。但是,当我如上所述切换到 java.time.LocalDateTime 时,发送到 Elasticsearch 的文档会导致异常。这是文档(时间戳字段仅为简洁起见):
"timestamp": {
"hour":7, "minute":56, "second":9, "nano":147000000, "year":2017, "month":"FEBRUARY",
"dayOfMonth":13, "dayOfWeek":"MONDAY", "dayOfYear":44, "monthValue":2, "chronology": {
"id":"ISO", "calendarType": "iso8601"
}
}
还有例外:
MapperParsingException[failed to parse [timestamp]]; nested: IllegalArgumentException[unknown property [hour]];
(...)
Caused by: java.lang.IllegalArgumentException: unknown property [hour]
在对文档进行 json 化时,这里的模式似乎被忽略了。任何可能的提示?或者您可能知道如何在 Spring Data 中使用“内置”_timestamp 字段?
【问题讨论】:
标签: java spring elasticsearch spring-data