[ https://issues.apache.org/jira/browse/SOLR-5944?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15735034#comment-15735034 ]
Ishan Chattopadhyaya edited comment on SOLR-5944 at 12/9/16 11:57 AM: ---------------------------------------------------------------------- {quote} that doesn't really answer my question at all: why does it matter if it's a dynamic field? {quote} If a document's dv field is updated for the first time (i.e. that field never existed before in the index before), then the in-place update succeeds if it is an explicit field but fails if it is a dynamic field. It fails with this error: {code} Caused by: java.lang.IllegalArgumentException: can only update existing docvalues fields! field=abc_f_dvo, type=NUMERIC at org.apache.lucene.index.IndexWriter.updateDocValues(IndexWriter.java:1715) at org.apache.solr.update.DirectUpdateHandler2.updateDocOrDocValues(DirectUpdateHandler2.java:875) at org.apache.solr.update.DirectUpdateHandler2.doNormalUpdate(DirectUpdateHandler2.java:279) at org.apache.solr.update.DirectUpdateHandler2.addDoc0(DirectUpdateHandler2.java:213) at org.apache.solr.update.DirectUpdateHandler2.addDoc(DirectUpdateHandler2.java:168) ... 57 more {code} The reason for this is that when a document is created, DV fields for all explicit fields are created. But when a non-existent dynamic field is attempted to be updated subsequently, then the underlying DV field doesn't exist. Attached a patch to demonstrate this. To demonstrate this, I've disabled the schema.isDynamicField() check and also another check that aborts the in-place updating for non-existent fields. (Fyi, the latter check is actually erroneous and needs to be re-written as I mentioned in the comment https://issues.apache.org/jira/browse/SOLR-5944?focusedCommentId=15729798&page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#comment-15729798) was (Author: ichattopadhyaya): {quote} that doesn't really answer my question at all: why does it matter if it's a dynamic field? {quote} If a document's dv field is updated for the first time (i.e. that field never existed before in the document before), then the in-place update succeeds if it is an explicit field but fails if it is a dynamic field. It fails with this error: {code} Caused by: java.lang.IllegalArgumentException: can only update existing docvalues fields! field=abc_f_dvo, type=NUMERIC at org.apache.lucene.index.IndexWriter.updateDocValues(IndexWriter.java:1715) at org.apache.solr.update.DirectUpdateHandler2.updateDocOrDocValues(DirectUpdateHandler2.java:875) at org.apache.solr.update.DirectUpdateHandler2.doNormalUpdate(DirectUpdateHandler2.java:279) at org.apache.solr.update.DirectUpdateHandler2.addDoc0(DirectUpdateHandler2.java:213) at org.apache.solr.update.DirectUpdateHandler2.addDoc(DirectUpdateHandler2.java:168) ... 57 more {code} The reason for this is that when a document is created, DV fields for all explicit fields are created. But when a non-existent dynamic field is attempted to be updated subsequently, then the underlying DV field doesn't exist. Attached a patch to demonstrate this. To demonstrate this, I've disabled the schema.isDynamicField() check and also another check that aborts the in-place updating for non-existent fields. (Fyi, the latter check is actually erroneous and needs to be re-written as I mentioned in the comment https://issues.apache.org/jira/browse/SOLR-5944?focusedCommentId=15729798&page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#comment-15729798) > Support updates of numeric DocValues > ------------------------------------ > > Key: SOLR-5944 > URL: https://issues.apache.org/jira/browse/SOLR-5944 > Project: Solr > Issue Type: New Feature > Reporter: Ishan Chattopadhyaya > Assignee: Shalin Shekhar Mangar > Attachments: DUP.patch, SOLR-5944.patch, SOLR-5944.patch, > SOLR-5944.patch, SOLR-5944.patch, SOLR-5944.patch, SOLR-5944.patch, > SOLR-5944.patch, SOLR-5944.patch, SOLR-5944.patch, SOLR-5944.patch, > SOLR-5944.patch, SOLR-5944.patch, SOLR-5944.patch, SOLR-5944.patch, > SOLR-5944.patch, SOLR-5944.patch, SOLR-5944.patch, SOLR-5944.patch, > SOLR-5944.patch, SOLR-5944.patch, SOLR-5944.patch, SOLR-5944.patch, > SOLR-5944.patch, SOLR-5944.patch, SOLR-5944.patch, SOLR-5944.patch, > SOLR-5944.patch, SOLR-5944.patch, SOLR-5944.patch, SOLR-5944.patch, > SOLR-5944.patch, SOLR-5944.patch, SOLR-5944.patch, SOLR-5944.patch, > SOLR-5944.patch, SOLR-5944.patch, SOLR-5944.patch, SOLR-5944.patch, > SOLR-5944.patch, SOLR-5944.patch, SOLR-5944.patch, SOLR-5944.patch, > SOLR-5944.patch, SOLR-5944.patch, SOLR-5944.patch, SOLR-5944.patch, > SOLR-5944.patch, SOLR-5944.patch, SOLR-5944.patch, SOLR-5944.patch, > SOLR-5944.patch, SOLR-5944.patch, SOLR-5944.patch, SOLR-5944.patch, > SOLR-5944.patch, SOLR-5944.patch, SOLR-5944.patch, SOLR-5944.patch, > SOLR-5944.patch, SOLR-5944.patch, SOLR-5944.patch, > TestStressInPlaceUpdates.eb044ac71.beast-167-failure.stdout.txt, > TestStressInPlaceUpdates.eb044ac71.beast-587-failure.stdout.txt, > TestStressInPlaceUpdates.eb044ac71.failures.tar.gz, defensive-checks.log.gz, > demo-why-dynamic-fields-cannot-be-inplace-updated-first-time.patch, > hoss.62D328FA1DEA57FD.fail.txt, hoss.62D328FA1DEA57FD.fail2.txt, > hoss.62D328FA1DEA57FD.fail3.txt, hoss.D768DD9443A98DC.fail.txt, > hoss.D768DD9443A98DC.pass.txt > > > LUCENE-5189 introduced support for updates to numeric docvalues. It would be > really nice to have Solr support this. -- 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