我在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”的同一时间?