我运行的是Solr7.7.x,它从MySQL导入包括日期在内的数据。在数据库中,时间被保存到服务器的当前时区。solr导入后,它会转换为UTC。在我的例子中,当拉取数据时,这会导致移位2小时:
MySQL:
"date_created":"2019-04-01 17:18:45"MySQL导入查询:
SELECT DATE_FORMAT( c.date_created, '%Y-%m-%dT%H:%i:%sZ' ) AS date_created FROM clssolr:
"date_created":"2019-04-01T19:18:45Z",PHP:
date("Y-m-d H:i:s", strtotime($item['date_created']));我也试过了:
$tz = new DateTimeZone('Europe/Berlin');
$date = new DateTime($classified['date_created']);
$date->setTimezone($tz);
$ad['time_created'][$index] = $date->format('Y-m-d H:i:s');同样的结果,时间偏移了2个小时。如果我将DateTimeZone更改为US,它将偏移be9h,这表明它至少有一些效果。
我暂时修复了它:$ad['time_created'][$index] = date("Y-m-d H:i:s", strtotime($classified['date_created'])-7200);,这对我来说不是一个好的解决方案。
如何从MySQL中保留时间,以及在solr中处理时区的推荐方法是什么?
发布于 2019-04-07 00:09:54
我不确定这是否能解决你的问题,但是你可以通过给solr分配一个时区来同步solr的时区和MySQL时区,默认情况下solr在UTC时区上工作。
如果Solr在Windows计算机上,请在solr-x.x.x\bin\solr.in.cmd中指定时区,如下所示
set SOLR_TIMEZONE=<yourTimezone>如果Solr在linux上,则在solr-x.x.x\bin\solr.in.sh中
SOLR_TIMEZONE="<yourTimezone>"https://stackoverflow.com/questions/55461058
复制相似问题