Solr'无效的日期字符串'异常 [英] Solr 'Invalid Date String' Exception

查看:204
本文介绍了Solr'无效的日期字符串'异常的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我很喜欢Solr。我成功索引了一些数据,但是在将date属性传递给适当的solr字段后,我收到一个例外:



我传递字符串15.06.2011 13 :51:41,这是德国等国家的普通日期格式。但是,经过一些搜索,我发现,Solr希望日期是UTC格式。



我的具体问题是:
我可以转换我的格式到什么时候在索尔?这将是DateFormatTransformer的一个例子,还是必须以最初的正确格式传递?



编辑:我没有使用DataImportHandler。我正在使用DirectUpdateHandler2将数据直接传递给Solr。因为它被称为直接更新,我的机会在转换任何东西都很糟糕吗?



对于记录,我得到的异常是:

 错误 -  2013-09-13 15:52:07.705; org.apache.solr.common.SolrException; org.apache.solr.common.SolrException:无效的日期字符串:'15 .06.2011 13:51:41'
在org.apache.solr.schema.DateField.parseMath(DateField.java:182)
在org.apache.solr.schema.TrieField.createField(TrieField.java:616)
在org.apache.solr.schema.TrieField.createFields(TrieField.java:655)
在org。 apache.solr.schema.TrieDateField.createFields(TrieDateField.java:157)
在org.apache.solr.update.DocumentBuilder.addField(DocumentBuilder.java:47)
在org.apache.solr。 update.DocumentBuilder.toDocument(DocumentBuilder.java:118)
在org.apache.solr.update.AddUpdateCommand.getLuceneDocument(AddUpdateCommand.java:73)
在org.apache.solr.update.DirectUpdateHandler2。 addDoc(DirectUpdateHandler2.java:210)
在org.apache.solr.update.processor.RunUpdateProcessor.processAdd(RunUpdateProcessorFactory.java:69)
在org.apache.solr.update.processor.UpdateRequestProcessor。 processAdd(UpdateRequestProcessor.java:51)
在org。 apache.solr.update.processor.DistributedUpdateProcessor.doLocalAdd(DistributedUpdateProcessor.java:556)
在org.apache.solr.update.processor.DistributedUpdateProcessor.versionAdd(DistributedUpdateProcessor.java:692)
在org。 apache.solr.update.processor.DistributedUpdateProcessor.processAdd(DistributedUpdateProcessor.java:435)
在org.apache.solr.update.processor.LogUpdateProcessor.processAdd(LogUpdateProcessorFactory.java:100)
在org。 apache.solr.handler.extraction.ExtractingDocumentLoader.doAdd(ExtractingDocumentLoader.java:121)
在org.apache.solr.handler.extraction.ExtractingDocumentLoader.addDoc(ExtractingDocumentLoader.java:126)
在org。 apache.solr.handler.extraction.ExtractingDocumentLoader.load(ExtractingDocumentLoader.java:228)
在org.apache.solr.handler.ContentStreamHandlerBase.handleRequestBody(ContentStreamHandlerBase.java:74)
在org.apache。 solr.handler.RequestHandlerBase.handleRequest(RequestHandlerBase.java: 135)
在org.apache.solr.core.RequestHandlers $ LazyRequestHandlerWrapper.handleRequest(RequestHandlers.java:241)
在org.apache.solr.core.SolrCore.execute(SolrCore.java:1904)
在org.apache.solr.servlet.SolrDispatchFilter.execute(SolrDispatchFilter.java:659)
在org.apache.solr.servlet.SolrDispatchFilter.doFilter(SolrDispatchFilter.java:362)
在org.apache.solr.servlet.SolrDispatchFilter.doFilter(SolrDispatchFilter.java:158)
在org.eclipse.jetty.servlet.ServletHandler $ CachedChain.doFilter(ServletHandler.java:1419)
在org .eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:455)
在org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:137)
在org.eclipse .jetty.security.SecurityHandler.handle(SecurityHandler.java:557)
在org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:231)
在org.eclipse.jetty .server.handler.ContextHandler.doHandle(Cont extHandler.java:1075)
在org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:384)
在org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler。 java:193)
在org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1009)
在org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler。 java:135)
在org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:255)
在org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection。 java:154)
在org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:116)
在org.eclipse.jetty.server.Server.handle(Server.java: 368)
在org.eclipse.jetty.server.AbstractHttpConnection.handleRequest(AbstractHttpConnection.java:489)
在org.eclipse.jetty.server.BlockingHttpConnection.handleRequest(BlockingHttpConnection.java:53)
在org.eclipse.jetty.se rver.AbstractHttpConnection.headerComplete(AbstractHttpConnection.java:942)
在org.eclipse.jetty.server.AbstractHttpConnection $ RequestHandler.headerComplete(AbstractHttpConnection.java:1004)
在org.eclipse.jetty.http。 HttpParser.parseNext(HttpParser.java:636)
在org.eclipse.jetty.http.HttpParser.parseAvailable(HttpParser.java:235)
在org.eclipse.jetty.server.BlockingHttpConnection.handle( BlockingHttpConnection.java:72)
在org.eclipse.jetty.server.bio.SocketConnector $ ConnectorEndPoint.run(SocketConnector.java:264)
在org.eclipse.jetty.util.thread.QueuedThreadPool。 runJob(QueuedThreadPool.java:608)
在org.eclipse.jetty.util.thread.QueuedThreadPool $ 3.run(QueuedThreadPool.java:543)
在java.lang.Thread.run(未知来源)


解决方案

根据索尔DateField documenta需要这种格式:


日期字段的格式必须为1995-12-31T23:59:59Z尾随Z表示UTC时间,并且是强制性的(有关UTC的说明,请参见下文)。只要它们不以尾随0结尾(但超出毫秒的任何精度都将被忽略),则允许选择小数秒。所有其他部分都是必需的。


唯一的选择是将日期转换成Solr。如果您使用DataImportHandler,则可能在该上下文/进程中。


I'm new to Solr. I successfully indexed some data, but after passing a date attribute to an appropriate solr field I'm receiving an exception:

I'm passing the String "15.06.2011 13:51:41", which is a common date format for countries like Germany. However, after some googling I found out, that Solr expects a date to be in the UTC format.

My specific question is: Can I transform my format to UTC at some point at Solr? Would this be a case for the DateFormatTransformer or is it a MUST to pass it in the correct format initially?

EDIT: I am not using a DataImportHandler. I'm using the DirectUpdateHandler2 by passing the data directly to Solr. Since it's called 'direct update', are my chances pretty bad in transforming anything there?

For the records, the exception I got was:

ERROR - 2013-09-13 15:52:07.705; org.apache.solr.common.SolrException; org.apache.solr.common.SolrException: Invalid Date String:'15.06.2011 13:51:41'
    at org.apache.solr.schema.DateField.parseMath(DateField.java:182)
    at org.apache.solr.schema.TrieField.createField(TrieField.java:616)
    at org.apache.solr.schema.TrieField.createFields(TrieField.java:655)
    at org.apache.solr.schema.TrieDateField.createFields(TrieDateField.java:157)
    at org.apache.solr.update.DocumentBuilder.addField(DocumentBuilder.java:47)
    at org.apache.solr.update.DocumentBuilder.toDocument(DocumentBuilder.java:118)
    at org.apache.solr.update.AddUpdateCommand.getLuceneDocument(AddUpdateCommand.java:73)
    at org.apache.solr.update.DirectUpdateHandler2.addDoc(DirectUpdateHandler2.java:210)
    at org.apache.solr.update.processor.RunUpdateProcessor.processAdd(RunUpdateProcessorFactory.java:69)
    at org.apache.solr.update.processor.UpdateRequestProcessor.processAdd(UpdateRequestProcessor.java:51)
    at org.apache.solr.update.processor.DistributedUpdateProcessor.doLocalAdd(DistributedUpdateProcessor.java:556)
    at org.apache.solr.update.processor.DistributedUpdateProcessor.versionAdd(DistributedUpdateProcessor.java:692)
    at org.apache.solr.update.processor.DistributedUpdateProcessor.processAdd(DistributedUpdateProcessor.java:435)
    at org.apache.solr.update.processor.LogUpdateProcessor.processAdd(LogUpdateProcessorFactory.java:100)
    at org.apache.solr.handler.extraction.ExtractingDocumentLoader.doAdd(ExtractingDocumentLoader.java:121)
    at org.apache.solr.handler.extraction.ExtractingDocumentLoader.addDoc(ExtractingDocumentLoader.java:126)
    at org.apache.solr.handler.extraction.ExtractingDocumentLoader.load(ExtractingDocumentLoader.java:228)
    at org.apache.solr.handler.ContentStreamHandlerBase.handleRequestBody(ContentStreamHandlerBase.java:74)
    at org.apache.solr.handler.RequestHandlerBase.handleRequest(RequestHandlerBase.java:135)
    at org.apache.solr.core.RequestHandlers$LazyRequestHandlerWrapper.handleRequest(RequestHandlers.java:241)
    at org.apache.solr.core.SolrCore.execute(SolrCore.java:1904)
    at org.apache.solr.servlet.SolrDispatchFilter.execute(SolrDispatchFilter.java:659)
    at org.apache.solr.servlet.SolrDispatchFilter.doFilter(SolrDispatchFilter.java:362)
    at org.apache.solr.servlet.SolrDispatchFilter.doFilter(SolrDispatchFilter.java:158)
    at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1419)
    at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:455)
    at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:137)
    at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:557)
    at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:231)
    at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1075)
    at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:384)
    at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:193)
    at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1009)
    at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:135)
    at org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:255)
    at org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:154)
    at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:116)
    at org.eclipse.jetty.server.Server.handle(Server.java:368)
    at org.eclipse.jetty.server.AbstractHttpConnection.handleRequest(AbstractHttpConnection.java:489)
    at org.eclipse.jetty.server.BlockingHttpConnection.handleRequest(BlockingHttpConnection.java:53)
    at org.eclipse.jetty.server.AbstractHttpConnection.headerComplete(AbstractHttpConnection.java:942)
    at org.eclipse.jetty.server.AbstractHttpConnection$RequestHandler.headerComplete(AbstractHttpConnection.java:1004)
    at org.eclipse.jetty.http.HttpParser.parseNext(HttpParser.java:636)
    at org.eclipse.jetty.http.HttpParser.parseAvailable(HttpParser.java:235)
    at org.eclipse.jetty.server.BlockingHttpConnection.handle(BlockingHttpConnection.java:72)
    at org.eclipse.jetty.server.bio.SocketConnector$ConnectorEndPoint.run(SocketConnector.java:264)
    at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:608)
    at org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:543)
    at java.lang.Thread.run(Unknown Source)

解决方案

According to the Solr DateField documentation, this format is required:

date field shall be of the form 1995-12-31T23:59:59Z The trailing "Z" designates UTC time and is mandatory (See below for an explanation of UTC). Optional fractional seconds are allowed, as long as they do not end in a trailing 0 (but any precision beyond milliseconds will be ignored). All other parts are mandatory.

The only option is to transform the date prior to sending it into Solr. If you are using DataImportHandler, it would be possible within that context/process.

这篇关于Solr'无效的日期字符串'异常的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆