为打开文档的last_modified字段建立索引的问题

时间:2019-06-17 15:07:39

标签: solr

我安装了Solr 8.1,当我尝试索引打开文档(ods,odt等)时,抛出last_modified无效的日期错误。对于其他文档格式(pdf,doc,...),索引工作正常。

该字段的schema.xml定义:

  

<field name="last_modified" type="date" indexed="true" stored="true"/> ... <fieldType name="date" class="solr.DatePointField" docValues="true"/>

例外:

  

org.apache.solr.common.SolrException:错误:   [doc = D42039220124097949-A100020965]添加字段时出错   'last_modified'='2019-06-14T16:59:47.610000000'msg =无效的日期   字符串:'2019-06-14T16:59:47.610000000'   org.apache.solr.update.DocumentBuilder.toDocument(DocumentBuilder.java:215)     在   org.apache.solr.update.AddUpdateCommand.getLuceneDocument(AddUpdateCommand.java:109)     在   org.apache.solr.update.DirectUpdateHandler2.updateDocOrDocValues(DirectUpdateHandler2.java:968)     在   org.apache.solr.update.DirectUpdateHandler2.doNormalUpdate(DirectUpdateHandler2.java:342)     在   org.apache.solr.update.DirectUpdateHandler2.addDoc0(DirectUpdateHandler2.java:289)     在   org.apache.solr.update.DirectUpdateHandler2.addDoc(DirectUpdateHandler2.java:236)     在   org.apache.solr.update.processor.RunUpdateProcessor.processAdd(RunUpdateProcessorFactory.java:76)     在   org.apache.solr.update.processor.UpdateRequestProcessor.processAdd(UpdateRequestProcessor.java:55)     在   org.apache.solr.update.processor.DistributedUpdateProcessor.doLocalAdd(DistributedUpdateProcessor.java:257)     在   org.apache.solr.update.processor.DistributedUpdateProcessor.doVersionAdd(DistributedUpdateProcessor.java:483)     在   org.apache.solr.update.processor.DistributedUpdateProcessor.lambda $ versionAdd $ 0(DistributedUpdateProcessor.java:337)     在   org.apache.solr.update.VersionBucket.runWithLock(VersionBucket.java:50)     在   org.apache.solr.update.processor.DistributedUpdateProcessor.versionAdd(DistributedUpdateProcessor.java:337)     在   org.apache.solr.update.processor.DistributedUpdateProcessor.processAdd(DistributedUpdateProcessor.java:223)     在   org.apache.solr.update.processor.LogUpdateProcessorFactory $ LogUpdateProcessor.processAdd(LogUpdateProcessorFactory.java:103)     在   org.apache.solr.handler.extraction.ExtractingDocumentLoader.doAdd(ExtractingDocumentLoader.java:126)     在   org.apache.solr.handler.extraction.ExtractingDocumentLoader.addDoc(ExtractingDocumentLoader.java:131)     在   org.apache.solr.handler.extraction.ExtractingDocumentLoader.load(ExtractingDocumentLoader.java:237)     在   org.apache.solr.handler.ContentStreamHandlerBase.handleRequestBody(ContentStreamHandlerBase.java:68)     在   org.apache.solr.handler.RequestHandlerBase.handleRequest(RequestHandlerBase.java:199)     在org.apache.solr.core.SolrCore.execute(SolrCore.java:2566)处   org.apache.solr.servlet.HttpSolrCall.execute(HttpSolrCall.java:756)     在org.apache.solr.servlet.HttpSolrCall.call(HttpSolrCall.java:542)     在   org.apache.solr.servlet.SolrDispatchFilter.doFilter(SolrDispatchFilter.java:397)     在   org.apache.solr.servlet.SolrDispatchFilter.doFilter(SolrDispatchFilter.java:343)     在   org.eclipse.jetty.servlet.ServletHandler $ CachedChain.doFilter(ServletHandler.java:1602)     在   org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:540)     在   org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:146)     在   org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:548)     在   org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:132)     在   org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:257)     在   org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:1588)     在   org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:255)     在   org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1345)     在   org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:203)     在   org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:480)     在   org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:1557)     在   org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:201)     在   org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1247)     在   org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:144)     在   org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:220)     在   org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:126)     在   org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:132)     在   org.eclipse.jetty.rewrite.handler.RewriteHandler.handle(RewriteHandler.java:335)     在   org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:132)     在org.eclipse.jetty.server.Server.handle(Server.java:502)处   org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:364)在   org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:260)     在   org.eclipse.jetty.io.AbstractConnection $ ReadCallback.succeeded(AbstractConnection.java:305)     在org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:103)     在   org.eclipse.jetty.io.ChannelEndPoint $ 2.run(ChannelEndPoint.java:118)     在   org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.runTask(EatWhatYouKill.java:333)     在   org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.doProduce(EatWhatYouKill.java:310)     在   org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.tryProduce(EatWhatYouKill.java:168)     在   org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.run(EatWhatYouKill.java:126)     在   org.eclipse.jetty.util.thread.ReservedThreadExecutor $ ReservedThread.run(ReservedThreadExecutor.java:366)     在   org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:765)     在   org.eclipse.jetty.util.thread.QueuedThreadPool $ 2.run(QueuedThreadPool.java:683)     在java.lang.Thread.run(Thread.java:748)造成原因:   org.apache.solr.common.SolrException:无效的日期   字符串:'2019-06-14T16:59:47.610000000'   org.apache.solr.util.DateMathParser.parseMath(DateMathParser.java:247)     在   org.apache.solr.util.DateMathParser.parseMath(DateMathParser.java:226)     在   org.apache.solr.schema.DatePointField.createField(DatePointField.java:214)     在   org.apache.solr.schema.PointField.createFields(PointField.java:250)     在   org.apache.solr.update.DocumentBuilder.addField(DocumentBuilder.java:65)     在   org.apache.solr.update.DocumentBuilder.toDocument(DocumentBuilder.java:171)     ... 58更多

1 个答案:

答案 0 :(得分:0)

我遇到了同样的问题,结果是应该通过调用toString()来传递Date的字符串表示形式,而不是传递Date对象。就我而言,它是LocalDateTime-

Object value = ((LocalDateTime) value).toString();
solrDoc.addField("last_login_on", value);
相关问题