【发布时间】:2013-08-22 08:21:33
【问题描述】:
希望你能帮助我。我刚开始维护的应用程序有问题。该应用程序使用 SOLR 进行索引,并且应该使用数据库中的数据填充两个核心。
我在重新索引时不断收到以下错误:
2013 年 8 月 22 日上午 10:09:49 org.apache.solr.common.SolrException 日志
严重:org.apache.solr.common.SolrException:未定义字段: “editor_id”
at org.apache.solr.schema.IndexSchema.getField(IndexSchema.java:965)
[...堆栈跟踪...]
at java.lang.Thread.run(Thread.java:679)
我的这个核心的 schema.xml:
<solrQueryParser defaultOperator="AND" />
<fields>
<field name="id" type="string" indexed="true" stored="true" required="true" multiValued="false"/>
<field name="name" type="text_nl" indexed="true" stored="false"/>
<field name="platform" type="string" indexed="true" stored="false" multiValued="false"/>
<field name="date" type="date" indexed="true" stored="false" multiValued="false"/>
<field name="content" type="text_nl" indexed="true" stored="false"/>
<field name="division_id" type="long" indexed="true" stored="false" multiValued="false"/>
<field name="division" type="text_nl" indexed="true" stored="false" multiValued="false"/>
<field name="subdivision_id" type="long" indexed="true" stored="false" multiValued="false"/>
<field name="subdivision" type="text_nl" indexed="true" stored="false" multiValued="false"/>
<field name="editor_id" type="long" indexed="true" stored="false" multiValued="false"/>
<field name="editor" type="text_nl" indexed="true" stored="false" multiValued="false"/>
<field name="status" type="text_nl" indexed="true" stored="false" multiValued="false"/>
<field name="status_id" type="long" indexed="true" stored="false" multiValued="false"/>
<field name="lines" type="text_nl" indexed="true" stored="false" multiValued="true"/>
<field name="text" type="text_nl" indexed="true" stored="false" multiValued="true"/>
<field name="_version_" type="long" indexed="true" stored="true"/>
<field name="suggest_nl" type="text_nl_suggest" indexed="true" stored="true" multiValued="true"/>
<copyField source="*" dest="suggest_nl"/>
</fields>
<uniqueKey>id</uniqueKey>
如您所见,模式中存在 editor_id。在数据库中,我们从表名中获取数据已重命名为 editor_user_id。当我将 editor_id 的 schema.xml 规则重命名为 editor_user_id 时,它仍然会返回上述错误,就好像 schema.xml 无关紧要一样。
我是否遗漏了有关如何更新架构以匹配数据库表的内容?
任何关于如何摆脱这个错误的建议都将不胜感激,因为我在 SOLR/LUCENE/TOMCAT 设置方面有点菜鸟。
谢谢。
编辑:
这是完整的堆栈跟踪:
2013 年 8 月 22 日上午 11:47:52 org.apache.solr.common.SolrException 日志 严重:org.apache.solr.common.SolrException:未定义字段: “editor_id” 在 org.apache.solr.schema.IndexSchema.getField(IndexSchema.java:965) 在 org.apache.solr.schema.IndexSchema.getCopyFieldsList(IndexSchema.java:1077) 在 org.apache.solr.update.DocumentBuilder.toDocument(DocumentBuilder.java:274) 在 org.apache.solr.update.AddUpdateCommand.getLuceneDocument(AddUpdateCommand.java:73) 在 org.apache.solr.update.DirectUpdateHandler2.addDoc(DirectUpdateHandler2.java:201) 在 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:455) 在 org.apache.solr.update.processor.DistributedUpdateProcessor.versionAdd(DistributedUpdateProcessor.java:591) 在 org.apache.solr.update.processor.DistributedUpdateProcessor.processAdd(DistributedUpdateProcessor.java:350) 在 org.apache.solr.update.processor.LogUpdateProcessor.processAdd(LogUpdateProcessorFactory.java:100) 在 org.apache.solr.handler.loader.XMLLoader.processUpdate(XMLLoader.java:246) 在 org.apache.solr.handler.loader.XMLLoader.load(XMLLoader.java:173) 在 org.apache.solr.handler.UpdateRequestHandler$1.load(UpdateRequestHandler.java:92) 在 org.apache.solr.handler.ContentStreamHandlerBase.handleRequestBody(ContentStreamHandlerBase.java:74) 在 org.apache.solr.handler.RequestHandlerBase.handleRequest(RequestHandlerBase.java:135) 在 org.apache.solr.core.SolrCore.execute(SolrCore.java:1816) 在 org.apache.solr.servlet.SolrDispatchFilter.execute(SolrDispatchFilter.java:448) 在 org.apache.solr.servlet.SolrDispatchFilter.doFilter(SolrDispatchFilter.java:269) 在 org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235) 在 org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) 在 org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233) 在 org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191) 在 org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127) 在 org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) 在 org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) 在 org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293) 在 org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:859) 在 org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:602) 在 org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489) 在 java.lang.Thread.run(Thread.java:679)
【问题讨论】:
-
请您粘贴整个堆栈跟踪 :) 当您尝试运行您的服务器时,您是否收到此错误?
-
编辑中的堆栈跟踪。在我开始重新索引我的“项目”核心之前,我不会随时收到此错误。如您所见,该架构将 editor_id 提到很长。当我将其更改为例如 editor_user_id 时,堆栈跟踪保持不变。
-
您使用什么过程将数据加载到 Solr 索引中? DataImportHandler、自定义代码等。您能否显示该过程的相关部分,因为听起来需要进行更改以适应数据库字段名称的更改。
-
你能找出根本原因吗?