【问题标题】:Solr exception: undefined field error with re-indexingSolr 异常:重新索引的未定义字段错误
【发布时间】: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、自定义代码等。您能否显示该过程的相关部分,因为听起来需要进行更改以适应数据库字段名称的更改。
  • 你能找出根本原因吗?

标签: database solr reindex


【解决方案1】:

您需要重新启动 solr 服务器(Tomcat/jetty)以反映 solr 配置文件(schema.xml、solrconfig.xml)中的任何更改。

【讨论】:

  • 到目前为止,我在每次更改后都重新启动.. 没有帮助。
【解决方案2】:

您可能在不同的文件夹中有多个 schema.xml 文件。

您实际使用的那个应该在您的 solrconfig.xml 或 solr.xml 中以多种不同的方式指定。 如果您有更多 schema.xml 副本,请查看并最终查看其他文件以检查对它的引用。

还要检查您是否有主从环境,在这种情况下,您可能必须手动将文件复制到主服务器和从服务器,和/或在 solrconfig 中指定需要在复制时复制它.xml。

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-03-13
  • 2013-12-27
  • 2012-09-03
  • 1970-01-01
相关资源
最近更新 更多