1
我正在使用Spring Data對Elasticsearch的支持。這裏是時間戳字段映射:如何使Spring Data Elasticsearch與java.time.LocalDateTime一起使用日期
@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]
jsonizing文檔時,它看起來像模式正在這裏被忽略了。任何可能的提示?或者,也許你可能知道如何在Spring Data中使用「內置」_timestamp字段?
看起來很有希望。缺少JavaTimeModule的任何原因 – theadam
也許支持JDK <8 ...您可以使用'objectMapper.findAndRegisterModules();'註冊類路徑中找到的所有模塊... –