【问题标题】:Elasticsearch stores Date as ArrayElasticsearch 将日期存储为数组
【发布时间】:2019-12-22 21:51:15
【问题描述】:

在我的项目中,我使用 Elasticsearch 6.x 来存储数据。

当我存储一个日期时,它被保存为一个数组。

LocalDate 到 Array 的转换在 java 对象“ObjectMapper”和方法“writeValueAsString”内

这是我的映射:

"myDate": {
  "type": "date",
  "format": "strict_date_optional_time||epoch_millis"
}

这是结果:

"myDate": [
2017
,
11
,
10
]

我在输入中转换 LocalDate 以毫秒为单位,当我搜索日期范围时,我没有命中

【问题讨论】:

    标签: java elasticsearch


    【解决方案1】:

    如果您确定问题与 ObjectMapper 而不是 Elastic 有关,您可以尝试像这样配置 ObjectMapper:

    import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule
    
    ...
    
    ObjectMapper().registerModule(JavaTimeModule())
    

    【讨论】:

    • 感谢您的回复,但此解决方案不适用。我传递了一个包含多个字段的对象,我不能只为 JavaTimeModule 设置对象映射器。此外,该项目的一部分不是由我开发的,这是使用的:ObjectMapperUtil.newObjectMapper.registerModule(new Json4sScalaModule);
    • @MassimoB 你能在你的问题中分享更多细节吗?喜欢minimal reproducible example。很难猜
    • 最后我把它添加到了映射器中:objectMapper.disable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS);现在我有 "myDate": "2017-11-10"
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-01
    • 1970-01-01
    • 2016-09-22
    • 2018-02-09
    • 1970-01-01
    • 2016-03-08
    相关资源
    最近更新 更多