Исключение Solr: неопределенная ошибка поля с переиндексацией
Надеясь, что ты сможешь мне помочь. У меня проблема с приложением, которое я только начал поддерживать. Приложение использует SOLR для индексации и должно заполнять два ядра данными из базы данных.
Я продолжаю получать следующую ошибку при переиндексации:
22 августа 2013 г. 10:09:49 org.apache.solr.common.SolrException log
SEVERE: 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. Когда я переименовываю правило schema.xml для editor_id в editor_user_id, оно все равно возвращается с вышеуказанной ошибкой, как будто schema.xml не имеет значения.
Я что-то здесь упускаю, как обновить схему, чтобы она соответствовала таблице базы данных?
Будем очень благодарны за любые предложения о том, как избавиться от этой ошибки, так как я являюсь новичком, когда дело доходит до установок SOLR/LUCENE/TOMCAT.
Благодарю.
Редактировать:
Вот полная трассировка стека:
22 августа 2013 г. 11:47:52 Журнал org.apache.solr.common.SolrException SEVERE: 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.updatePro Java:69) в org.apache.solr.update.processor.UpdateRequestProcessor.processAdd(UpdateRequestProcessor.java:51) в org.apache.solr.update.processor.DistributedUpdateProcessor.doLocalAdd(DistributedUpdateProapor)..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.Xj.aderMateOll: 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.exte) в org.apache.solr.servlet.SolrDispatchFilter.execute(SolrDispatchFilter.java:448) в org.apache.solr.servlet.SolrDispatchFilter.doFilter(SolrDispatchFilter.java:269) в org.apil.Cache.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(StandardContextValache.catg: atg: orina.catg: at..core.StandardHostValve.invoke(StandardHostValve.java:127) в org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) в org.apache.catalina.core.StandardEngineValve.jj) в org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293) в org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:859) в org.apache.coyote.http11H Http11ConnectionHandler.process(Http11Protocol.java:602) в org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489) в java.lang.Thread.run(Thread.java:679)
2 ответа
Вам необходимо перезапустить свой сервер solr(Tomcat/jetty), чтобы отразить любые изменения в файлах конфигурации solr (schema.xml, solrconfig.xml).
У вас может быть несколько файлов schema.xml в разных папках.
Тот, который вы фактически используете, должен быть указан в вашем solrconfig.xml или solr.xml многими различными способами. Посмотрите, есть ли у вас больше копий schema.xml, и, в конце концов, взгляните на эти другие файлы, чтобы проверить, нет ли на них ссылки.
Также проверьте, есть ли у вас основная подчиненная среда, и в этом случае вам, возможно, придется вручную скопировать ваш файл на главный и подчиненный серверы и / или указать, что он должен быть скопирован во время репликации в файле solrconfig.xml.