SolrException: в документе [null] отсутствует обязательное поле: id - PullRequest
3 голосов
/ 24 июня 2011

Я изменил файл schema.xml и добавил несколько полей, подобных этому

<field name="url" type="string" indexed="true" stored="true" />
   <field name="content_type" type="text" indexed="true" stored="true" />
   <field name="title" type="text" indexed="true" stored="true" />
   <field name="keywords" type="text" indexed="true" stored="true" multiValued="true" />
   <field name="text" type="text" indexed="true" stored="true" />
   <field name="timestamp" type="text" indexed="true" stored="true" />
   <field name="public" type="text" indexed="true" stored="true" multiValued="true" />
   <field name="groups" type="text" indexed="true" stored="true" multiValued="true" />
   <field name="sitename" type="text" indexed="true" stored="true" />
   <field name="context" type="text" indexed="true" stored="true" />
   <field name="modified_date" type="text" indexed="true" stored="true" />

в соответствии с этими полями я создал один XML-файл и добавил в него несколько фиктивных данных.

    <add><doc>
  <field name="url">http://www.host.com/</field>
  <field name="content_type">text/html</field>
  <field name="title">Testing Data</field>
  <field name="keywords">software</field>
  <field name="keywords">software_cycle</field>
  <field name="text">search</field>
  <field name="timestamp">2006-02-13T15:26:37Z</field>
  <field name="public">Optimized</field>
  <field name="public">Optimized_data</field>
  <field name="groups">Standards</field>
  <field name="groups">Standards_data</field>
  <field name="sitename">GoInfo</field>
  <field name="context">Scalability</field>
  <field name="modified_date">2010-11-13T15:26:37Z</field>
  </doc></add>

И когда я попытался переиндексировать данные в solr следующим образом: -

C:\apache-solr-3.2.0\example\exampledocs>java -Durl=http://localhost:7788/solr/u
pdate -jar post.jar *.xml
SimplePostTool: version 1.3
SimplePostTool: POSTing files to http://localhost:7788/solr/update..
SimplePostTool: POSTing file 30-example.xml
SimplePostTool: POSTing file hd.xml
SimplePostTool: POSTing file other.xml
SimplePostTool: FATAL: Solr returned an error #400 Bad Request

Я всегда получаю сообщение об ошибке после файла text.xml, и если я удаляю этот файл text.xml, я не получаю никакой ошибки. Это ошибка ниже, которую я получаю, если я включаю файл text.xml. Любая помощь будет оценена.

SEVERE: org.apache.solr.common.SolrException: Document [null] missing required field: id
        at org.apache.solr.update.DocumentBuilder.toDocument(DocumentBuilder.java:336)
        at org.apache.solr.update.processor.RunUpdateProcessor.processAdd(RunUpdateProcessorFactory.java:60)
        at org.apache.solr.handler.XMLLoader.processUpdate(XMLLoader.java:147)
        at org.apache.solr.handler.XMLLoader.load(XMLLoader.java:77)
        at org.apache.solr.handler.ContentStreamHandlerBase.handleRequestBody(ContentStreamHandlerBase.java:67)
        at org.apache.solr.handler.RequestHandlerBase.handleRequest(RequestHandlerBase.java:129)
        at org.apache.solr.core.SolrCore.execute(SolrCore.java:1360)
        at org.apache.solr.servlet.SolrDispatchFilter.execute(SolrDispatchFilter.java:356)
        at org.apache.solr.servlet.SolrDispatchFilter.doFilter(SolrDispatchFilter.java:252)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
        at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
        at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
        at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
        at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
        at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
        at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298)
        at org.apache.coyote.http11.Http11AprProcessor.process(Http11AprProcessor.java:864)
        at org.apache.coyote.http11.Http11AprProtocol$Http11ConnectionHandler.process(Http11AprProtocol.java:579)
        at org.apache.tomcat.util.net.AprEndpoint$Worker.run(AprEndpoint.java:1665)
        at java.lang.Thread.run(Thread.java:662)

Ответы [ 2 ]

2 голосов
/ 24 июня 2011

Вы говорите, что добавили несколько полей (предположительно в пример схемы), но не упоминаете, что случилось с полями, которые уже были там. Я предполагаю, что вы оставили там уже существующие поля, что означает, что id все еще является обязательным полем (см. здесь в примере схемы), поэтому вы видите ошибку.

1 голос
/ 28 декабря 2011

Сделать

Идентификатор "первичного ключа". Это действительно требуется.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...