Elasticsearch是否支持对序列化的java.time.Instant字段进行搜索和报告?

时间:2018-07-26 13:49:20

标签: java elasticsearch spring-data couchbase

我有以下json:

Order {

   "creationDate" : 1441108800000,
   "expiryDate" : 253402300799000

}

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

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

如果这不是存储日期时间的最佳方法,请建议一种更好的方法来处理日期时间要求,通常考虑时区,春季沙发床序列化和使用弹性搜索进行搜索。

2 个答案:

答案 0 :(得分:0)

如果您计划在Couchbase中使用N1QL查询语言的日期/时间操作功能,建议您使用人类可读的日期/时间戳,例如2006-01-02T15:04:05.999+00:00。它们是这些功能的最佳搭配。而且在其他环境中也广泛支持这种格式。

更多信息: https://developer.couchbase.com/documentation/server/current/n1ql/n1ql-language-reference/datefun.html

答案 1 :(得分:0)

这对我有用:

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