Guido created SOLR-6608:
---------------------------

             Summary: Atomic update with CloudSolrServer gives 'missing 
required field:'
                 Key: SOLR-6608
                 URL: https://issues.apache.org/jira/browse/SOLR-6608
             Project: Solr
          Issue Type: Bug
          Components: SolrCloud, update
            Reporter: Guido


Dear support,

I am trying to update a single field of a document which is already present 
inside my collection. This is the part of code involved:

_CloudSolrServer server = new CloudSolrServer(args[0]);_
_server.setDefaultCollection(args[1]);_
[...]
_SolrInputDocument updateSolrDoc = new SolrInputDocument();_
_String id = [...]_
_updateSolrDoc.addField("id", id);_
_List<String> phoneNumbers = [...]_
_updateSolrDoc.setField("phoneNumbers", Collections.singletonMap("set", 
phoneNumbers));_
[...]
_buffer.add(updateSolrDoc);_
[...]
_server.add(buffer);_
_server.commit();_

When I try to run it, I receive the following exception:

2014-10-08 15:57:40.587 - ERROR org.apache.solr.common.SolrException  
org.apache.solr.common.SolrException: [doc=1021938980] missing required field: 
cityId
        at 
org.apache.solr.update.DocumentBuilder.toDocument(DocumentBuilder.java:189)
        at 
org.apache.solr.update.AddUpdateCommand.getLuceneDocument(AddUpdateCommand.java:77)
        at 
org.apache.solr.update.DirectUpdateHandler2.addDoc0(DirectUpdateHandler2.java:234)
        at 
org.apache.solr.update.DirectUpdateHandler2.addDoc(DirectUpdateHandler2.java:160)
        at 
org.apache.solr.update.processor.RunUpdateProcessor.processAdd(RunUpdateProcessorFactory.java:69)
        at 
org.apache.solr.update.processor.UpdateRequestProcessor.processAdd(UpdateRequestProcessor.java:51)
        at 
org.apache.solr.update.processor.DistributedUpdateProcessor.doLocalAdd(DistributedUpdateProcessor.java:704)
        at 
org.apache.solr.update.processor.DistributedUpdateProcessor.versionAdd(DistributedUpdateProcessor.java:858)
        at 
org.apache.solr.update.processor.DistributedUpdateProcessor.processAdd(DistributedUpdateProcessor.java:557)
        at 
org.apache.solr.handler.loader.JavabinLoader$1.update(JavabinLoader.java:96)
        at 
org.apache.solr.client.solrj.request.JavaBinUpdateRequestCodec$1.readOuterMostDocIterator(JavaBinUpdateRequestCodec.java:166)
        at 
org.apache.solr.client.solrj.request.JavaBinUpdateRequestCodec$1.readIterator(JavaBinUpdateRequestCodec.java:136)
        at 
org.apache.solr.common.util.JavaBinCodec.readVal(JavaBinCodec.java:225)
        at 
org.apache.solr.client.solrj.request.JavaBinUpdateRequestCodec$1.readNamedList(JavaBinUpdateRequestCodec.java:121)
        at 
org.apache.solr.common.util.JavaBinCodec.readVal(JavaBinCodec.java:190)
        at 
org.apache.solr.common.util.JavaBinCodec.unmarshal(JavaBinCodec.java:116)
        at 
org.apache.solr.client.solrj.request.JavaBinUpdateRequestCodec.unmarshal(JavaBinUpdateRequestCodec.java:173)
        at 
org.apache.solr.handler.loader.JavabinLoader.parseAndLoadDocs(JavabinLoader.java:106)
        at 
org.apache.solr.handler.loader.JavabinLoader.load(JavabinLoader.java:58)
        at 
org.apache.solr.handler.UpdateRequestHandler$1.load(UpdateRequestHandler.java:92)
        at 
org.apache.solr.handler.ContentStreamHandlerBase.handleRequestBody(ContentStreamHandlerBase.java:74)
        at 
org.apache.solr.handler.RequestHandlerBase.handleRequest(RequestHandlerBase.java:135)
        at org.apache.solr.core.SolrCore.execute(SolrCore.java:1952)
        at 
org.apache.solr.servlet.SolrDispatchFilter.execute(SolrDispatchFilter.java:774)
        at 
org.apache.solr.servlet.SolrDispatchFilter.doFilter(SolrDispatchFilter.java:418)
        at 
org.apache.solr.servlet.SolrDispatchFilter.doFilter(SolrDispatchFilter.java:207)
        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:103)
        at 
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
        at 
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293)
        at 
org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:861)
        at 
org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:606)
        at 
org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
        at java.lang.Thread.run(Thread.java:744)


This, instead, is the part of the schema.xml involved:

   _<field name="id" type="string" indexed="true" stored="true" required="true" 
/>_
[...]
   _<field name="cityId" type="string" indexed="true" stored="true" 
required="true" />_
[...]
   _<field name="phoneNumbers" type="string" indexed="true" stored="true" 
required="false" multiValued="true" sortMissingLast="true" />_
[...]
_<uniqueKey>id</uniqueKey>_

I have also another collection with a similar schema and I am using a similar 
code to perform atomic updates without issues, i.e. I don't need to specify all 
the fields marked as 'required' in order to update a single field. 
Unfortunately with this second collection I get this weird issue.

How can I successfully update a single field without having to pass all the 
fields marked as 'required'? Can you please tell me if there is something wrong 
in the code that I am using?

Thank you very much for your support.

Kind Regards



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@lucene.apache.org
For additional commands, e-mail: dev-h...@lucene.apache.org

Reply via email to