Solr - 格式日期

时间:2016-10-25 07:31:00

标签: java date solr jodatime solrj

我在solr中填写所有文档中的数据类型时遇到问题。 我使用的是solr 6.2.1和solrj 6.2.1 当我使用solr 5.2.1时,我没有遇到同样代码的问题。

我有一些文件,其字段“message_type”的日期类型为“2016-10-25T07:15:43.921Z”。我的工作是拿这些文件,填写一个新字段并在solr中更新所有文件。

当我阅读文档时,使用属性messageType

传递Object中每个文档的值
  

org.joda.time.DateTime

(messageDate = (new DateTime(object, DateTimeZone.UTC));)其中对象取自solr文档,在调试中我看到的是类型Date并且具有此值“Tue Oct 25 09:15:43 CEST 2016”.. 完成此分配后,messageType为“2016-10-25T07:15:43.921Z”,与原始文档中的相同..

当我将文档添加到solr客户端时,如下所示:

solrClient.add(solrDocuments);

我遇到了这个错误:

Exception in thread "Thread-3" org.apache.solr.client.solrj.impl.HttpSolrClient$RemoteSolrException: Error from server at http://........../solr/ion_message_collection: Invalid Date in Date Math String:'org.joda.time.DateTime:2016-10-25T07:15:43.921Z'
    at org.apache.solr.client.solrj.impl.HttpSolrClient.executeMethod(HttpSolrClient.java:592)
    at org.apache.solr.client.solrj.impl.HttpSolrClient.request(HttpSolrClient.java:261)
    at org.apache.solr.client.solrj.impl.HttpSolrClient.request(HttpSolrClient.java:250)
    at org.apache.solr.client.solrj.SolrRequest.process(SolrRequest.java:149)
    at org.apache.solr.client.solrj.SolrClient.add(SolrClient.java:106)
    at org.apache.solr.client.solrj.SolrClient.add(SolrClient.java:71)
    at org.apache.solr.client.solrj.SolrClient.add(SolrClient.java:85)

问题是...... 当我构建SolrInputDocument时,我这样做:

  

document.addField(message_date.name(),message.getMessageDate());

并且文档字段的结果是

  

“message_date” - > “MESSAGE_DATE = 2016-10-25T09:01:38.667Z”

- > “Z”导致问题...

因为,如果我这样做:

document.addField(message_date.name(), (message.getMessageDate() != null ? message.getMessageDate().toString().substring(0, message.getMessageDate().toString().length() -1) : null));

问题解决了......

但是我不喜欢这个解决方案...有人建议没有“Z”的同一时间?

0 个答案:

没有答案