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