Solr不以UTC格式保存时间

Solr不以UTC格式保存时间

问题描述:

如果我已经定义了一个Solr.DateField类型的字段,我读SOLR总是将它保存为GMT。但是我发现SOLR只需要在我的数据库中定义的时间,并且在没有转换的情况下写入。Solr不以UTC格式保存时间

是否有配置参数?

据我所知,Solr存储的日期为,正好为,因为您无法提供任何时区信息。由您自动转换为UTC。 Here's a forum thread that confirms this。例如,here are some conversion routines for PHP

+0

我有一台机器,solr自动执行此转换,但是当机器本身设置为GMT的另一台机器上运行相同的代码时,它不会发生。 http://lucene.472066.n3.nabble.com/SOLR-1-4-1-Indexing-DateField-time-zone-problem-td1966118.html解释一些。 – Prasanna 2011-03-01 07:22:24

+0

@Mauricio Scheffer我不确定,如果我理解你是对的。这是否意味着,solr将所有日期解释为UTC。那么开发人员只能使用UTC日期来提供solr?这意味着:我必须在发送到solr之前转换日期,并且“2012-12-13T14:42:16.437Z + 01:00”(带有“+01:00”)不起作用?!你知道吗,如果Solr 4有任何变化? – 2012-12-13 14:28:14

好的,我发现我给SOLR的日期没有设置时区,在这种情况下它默认为机器设置的任何时区。

据我所知的唯一的日期格式SOLR将接受的是:

YYYY-MM-DDTHH:MM:SS.000Z(!的Z是重要的)

+4

“Z”来自“祖鲁时间”或“零时间”,即GMT = 0(或UTC = 0) – Topera 2011-11-16 13:57:15

+1

谢谢,偶然知道为什么?在文件中他们说他们接受ISO格式的日期,但我没有找到一个参考,我们应该强制代表格林威治标准时间(以Z结尾) – 2012-10-24 08:56:04

在我的情况

,我们的服务器设置为非UTC时间。当solr从数据库中检索一行时,它会自动将该时间转换为UTC。

问题是存储在数据库中的数据是已在UTC中的。但因为solr拉数据时,它做了另一次转换为UTC ...

我们的目的正确的方式(在我看来)是将服务器设置为UTC时区...但可惜,那会搞乱整个服务器农场......我不做操作,我不知道后果。在任何情况下,我试图找到一种方法来解决这个问题在我的代码。

正如Mauricio Scheffer所述,SOLR并不关心时区,这令人沮丧。

但是!如果您有一个非UTC时间您知道索引该值的时区,则可以在SOLR更新中将其转换为UTC:

“2013-02-07T11:21:51Z + 8HOUR“

这看起来有点奇怪,但在PST时间戳中添加”Z + 8HOUR“会将其转换为UTC中的正确值。通常,索引时间戳时,可以使用任何DateMath修饰符。