Solr无法正确检索日期

时间:2018-05-29 10:11:01

标签: datetime solr timezone solrj

我在Solr中索引了一些包含一些时间戳的文档,例如:

2017-10-21T11:53:33Z

当我从Solr Admin UI执行查询时,我会得到正确的信息(确切的时间戳)。

但是,当我从SolrJ执行查询时,我得到以下时间戳:

Sat Oct 21 14:53:33 EEST 2017

存储此时间戳的字段具有以下类型:org.apache.solr.schema.TrieDateField

因此格式和时区已更改。我读了this帖子和this一个,我理解SolrJ在检索日期时会考虑当地时区,但为什么会这样呢?

此外,格式已更改,我不希望这样!我想要将日期索引到Solr时输入完全相同的格式。

当我使用SolrJ从Solr检索日期时如何更改此日期格式?如何在检索使用Solr Admin UI时可以看到的确切值(确切的时区)?

1 个答案:

答案 0 :(得分:1)

SolrJ解析Solr的响应,转换字符串" 2017-10-21T11:53:33Z"到Date对象并返回它。 默认情况下,时区以本地时区(EEST)打印,因此它只是一种表示形式,但日期/时间是相同的。您可以转换它并在任何时区显示。

例如,请参阅此答案:https://stackoverflow.com/a/22364501/937970

另一种选择是为JVM设置全局时区,但这可能会影响整个应用程序:

java -Duser.timezone=UTC ...

当您使用Solr Admin UI进行查询时,它只返回原始值,这就是您看到UTC值的原因。