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: [email protected]
For additional commands, e-mail: [email protected]