首页 > 解决方案 > elasticsearch 是否支持对序列化的 java.time.Instant 字段进行搜索和报告?

问题描述

我有以下 json :

Order {

   "creationDate" : 1441108800000,
   "expiryDate" : 253402300799000

}

在创建 java 对象时,我使用 Instant(例如 Instant.now() 来设置创建日期)来设置创建日期和到期日期。当我使用 spring 数据和 jackson 依赖项将其序列化到 couchbase 数据库中时,我得到了上面的 json。这些文档被复制到弹性中以进行搜索。

弹性能够搜索这些类型的日期吗?例如,搜索可能是过期订单?它可以处理日期转换等吗?

如果这不是存储日期时间的最佳方式,请建议一个更好的方法来处理日期时间要求,一般考虑时区、弹簧沙发基础序列化和使用弹性搜索进行搜索。

标签: javaelasticsearchspring-datacouchbase

解决方案


这对我有用:

我存储日期,只要我发现比较容易,并且仅在 UI 中显示时对其进行数学计算,我根据时区将其转换为人类可读的形式。我们可以通过调用instant.toEpochMilli() 在java 中得到它。Spring 数据在序列化和反序列化方面没有问题,并且弹性搜索有一个 Date 数据类型,我们可以在为我们的文档定义映射时设置它。


推荐阅读