Going through the code in the RunUpdateRequestProcessor we call at one point :
… Document luceneDocument = cmd.getLuceneDocument(); // SolrCore.verbose("updateDocument",updateTerm,luceneDocument,writer); writer.updateDocument(updateTerm, luceneDocument); .. Inside that method we call : public Document getLuceneDocument() { return DocumentBuilder.toDocument(getSolrInputDocument(), req.getSchema()); } Then exploring the toDocument we find what we need : org/apache/solr/update/DocumentBuilder.java:114 And looking into there we realise it is a bug : … if (!destinationField.multiValued() && destHasValues) { throw new SolrException(SolrException.ErrorCode.BAD_REQUEST, "ERROR: "+getID(doc, schema)+"multiple values encountered for non multiValued copy field " + destinationField.getName() + ": " + v); } ... Because the check is actually checking in already used fields, not expecting the copy field to be already valorised. Hence the exception coming. I will create an issue for that and provide a patch as soon as I have time ( or anyone can provide the patch). Cheers 2015-07-15 12:27 GMT+01:00 Alessandro Benedetti <benedetti.ale...@gmail.com> : > Ohhh! > I didn't read it completely, so i missed the copy field. > Ok now. > This is the explanation : > Copy fields are added at indexing time, when the document arrived to the > RunUpdateRequest processor. > If i remember well at this point , before we start the indexing the > content of source field is added to the copy field as a value. > > The first time you indexed your document , the first copy was added. > > What you didn't know is the fact that actually atomic update works in this > way : > > 1) I get the current Doc from the index ( the stored fields), > 2) I do the update, and > 3) then I send the document to the indexing processing chain *again*. > So the value is copied a second time. > > This will produce the duplicate value. > I can go in deep, but I think this is the cause. > > Cheers > > > 2015-07-15 12:10 GMT+01:00 Martínez López, Alfonso <almlo...@indra.es>: > >> Hi, thanks for your help! >> >> Value for 'dinamic_desc' field come from 'src_desc' field. I copy the >> value with: >> >> <copyField source="src_*" dest="dinamic_*"/> >> >> Seems like when I update a different field (field 'name') via atomic >> update, the copyField directive copies the value again from 'src_desc' to >> 'desc_field', instead of updating the value, like if 'desc_field' or >> 'desc_*' where multivalued. >> >> Cheers. >> ________________________________________ >> From: Alessandro Benedetti [benedetti.ale...@gmail.com] >> Sent: Wednesday, July 15, 2015 12:56 PM >> To: solr-user@lucene.apache.org >> Subject: Re: Does update field feature work in a schema with dynamic >> fields? >> >> Just tried, on Solr 5.1 and I get the proper behaviour. >> >> Actually where is the value for the dinamic_desc coming from ? >> >> I can not see it in the updates and actually it is not in my index. >> Are you sure you have not forgotten any detail ? >> >> Cheers >> >> 2015-07-15 11:48 GMT+01:00 Alessandro Benedetti < >> benedetti.ale...@gmail.com> >> : >> >> > This is kinda weird and looks a lot like a bug. >> > Let me try to reproduce it locally! >> > I let you know soon ! >> > >> > Cheers >> > >> > 2015-07-15 10:01 GMT+01:00 Martínez López, Alfonso <almlo...@indra.es>: >> > >> >> Hi, >> >> >> >> i'm using Solr 4.10.3, and i'm trying update a doc field using atomic >> >> update (http://wiki.apache.org/solr/Atomic_Updates). >> >> >> >> My schema.xml is like this: >> >> >> >> <!--Fields--> >> >> <field name="id" type="string" indexed="true" stored="true" >> >> required="true" /> >> >> <field name="name" type="string" indexed="true" stored="true" /> >> >> <field name="src_desc" type="string" indexed="true" stored="true" /> >> >> <field name="_version_" type="long" indexed="true" stored="true" / >> >> <!--Dynamic fields definition--> >> >> <dynamicField name="src_*" type="string" indexed="true" stored="true" >> >> multiValued="false" /> >> >> <dynamicField name="dinamic_*" type="string" indexed="true" >> stored="true" >> >> multiValued="false" /> >> >> <!--Copy fields--> >> >> <copyField source="src_*" dest="dinamic_*"/> >> >> >> >> >> >> I add a document with this command: >> >> >> >> >> >> >> >> curl http://<solr_host>:<sorl_port>/solr/default/update?commit=true -H >> >> "Content-Type: text/xml" --data-binary '<add><doc><field >> >> name="id">1</field><field name="name" >paco</field><field >> name="src_desc" >> >> >friend of mine</field></doc></add>' >> >> >> >> >> >> >> >> And later I update the field 'name' with this command: >> >> >> >> >> >> >> >> curl http://<solr_host>:<sorl_port>/solr/default/update?commit=true -H >> >> "Content-Type: text/xml" --data-binary '<add><doc><field >> >> name="id">1</field><field name="name" >> >> update="set">paquico</field></doc></add>' >> >> >> >> >> >> >> >> As I do so the doc i retrive from Solr is: >> >> >> >> >> >> >> >> <result name="response" numFound="1" start="0" maxScore="1.0"> >> >> <doc> >> >> <str name="id">1</str> >> >> <str name="name">paquico</str> >> >> <str name="src_desc">friend of mine</str> >> >> <arr name="dinamic_desc"> >> >> <str>friend of mine</str> >> >> <str>friend of mine</str> >> >> </arr> >> >> <long name="_version_">1506750859550130176</long> >> >> <float name="score">1.0</float> >> >> </doc> >> >> </result> >> >> >> >> >> >> >> >> So I get a non multivalued field (dinamic_desc) with multiple values :( >> >> >> >> >> >> >> >> >> >> >> >> ________________________________ >> >> Este correo electrónico y, en su caso, cualquier fichero anexo al >> mismo, >> >> contiene información de carácter confidencial exclusivamente dirigida >> a su >> >> destinatario o destinatarios. Si no es vd. el destinatario indicado, >> queda >> >> notificado que la lectura, utilización, divulgación y/o copia sin >> >> autorización está prohibida en virtud de la legislación vigente. En el >> caso >> >> de haber recibido este correo electrónico por error, se ruega notificar >> >> inmediatamente esta circunstancia mediante reenvío a la dirección >> >> electrónica del remitente. >> >> Evite imprimir este mensaje si no es estrictamente necesario. >> >> >> >> This email and any file attached to it (when applicable) contain(s) >> >> confidential information that is exclusively addressed to its >> recipient(s). >> >> If you are not the indicated recipient, you are informed that reading, >> >> using, disseminating and/or copying it without authorisation is >> forbidden >> >> in accordance with the legislation in effect. If you have received this >> >> email by mistake, please immediately notify the sender of the >> situation by >> >> resending it to their email address. >> >> Avoid printing this message if it is not absolutely necessary. >> >> >> > >> > >> > >> > -- >> > -------------------------- >> > >> > Benedetti Alessandro >> > Visiting card - http://about.me/alessandro_benedetti >> > Blog - http://alexbenedetti.blogspot.co.uk >> > >> > "Tyger, tyger burning bright >> > In the forests of the night, >> > What immortal hand or eye >> > Could frame thy fearful symmetry?" >> > >> > William Blake - Songs of Experience -1794 England >> > >> >> >> >> -- >> -------------------------- >> >> Benedetti Alessandro >> Visiting card - http://about.me/alessandro_benedetti >> Blog - http://alexbenedetti.blogspot.co.uk >> >> "Tyger, tyger burning bright >> In the forests of the night, >> What immortal hand or eye >> Could frame thy fearful symmetry?" >> >> William Blake - Songs of Experience -1794 England >> >> Este correo electrónico y, en su caso, cualquier fichero anexo al mismo, >> contiene información de carácter confidencial exclusivamente dirigida a su >> destinatario o destinatarios. Si no es vd. el destinatario indicado, queda >> notificado que la lectura, utilización, divulgación y/o copia sin >> autorización está prohibida en virtud de la legislación vigente. En el caso >> de haber recibido este correo electrónico por error, se ruega notificar >> inmediatamente esta circunstancia mediante reenvío a la dirección >> electrónica del remitente. >> Evite imprimir este mensaje si no es estrictamente necesario. >> >> This email and any file attached to it (when applicable) contain(s) >> confidential information that is exclusively addressed to its recipient(s). >> If you are not the indicated recipient, you are informed that reading, >> using, disseminating and/or copying it without authorisation is forbidden >> in accordance with the legislation in effect. If you have received this >> email by mistake, please immediately notify the sender of the situation by >> resending it to their email address. >> Avoid printing this message if it is not absolutely necessary. >> > > > > -- > -------------------------- > > Benedetti Alessandro > Visiting card - http://about.me/alessandro_benedetti > Blog - http://alexbenedetti.blogspot.co.uk > > "Tyger, tyger burning bright > In the forests of the night, > What immortal hand or eye > Could frame thy fearful symmetry?" > > William Blake - Songs of Experience -1794 England > -- -------------------------- Benedetti Alessandro Visiting card - http://about.me/alessandro_benedetti Blog - http://alexbenedetti.blogspot.co.uk "Tyger, tyger burning bright In the forests of the night, What immortal hand or eye Could frame thy fearful symmetry?" William Blake - Songs of Experience -1794 England