On 11/23/2017 11:31 PM, Leo Prince wrote:
We were using bit older version Solr 4.10.2 and upgrading to Solr7.

We have like 4mil records in one of the core which is of course pretty
huge, hence re-sourcing the index is nearly impossible and re-querying from
source Solr to Solr7 is also going to be an exhausting effort.

I hate to burst your bubble here ... but 4 million docs is pretty small for a Solr index. I have one index that's a hundred times larger, and there are people with *billions* of documents in SolrCloud.

Hence, I tried to upgrade the Index using
org.apache.lucene.index.IndexUpgrader.
<snip>
IndexUpgrader ran just fine without any errors. but got this error with
initializing the core.

*java.lang.IllegalStateException:java.lang.IllegalStateException:
unexpected docvalues type NONE for field '_version_' (expected=NUMERIC).
Re-index with correct docvalues type.*
Being said, I am using Classic Schema and used default managed-schema file
as classic schema.xml.

This error means that the existing index didn't have docValues on the _version_ field, but the new version does. At some point in 6.x, a whole bunch of field classes were changed to have docValues by default. You'll need to explicitly add 'docValues="false"' to the field definition to use an older index with a newer version. But based on some things you said later, this may be the least of the problems you're running into.

When comparing schema of 4.10.2 with that of 7.1.0, I see the field type
names have changed like follows

*<fieldType name="pint" class="solr.IntPointField"
docValues="true"/><fieldType name="pfloat" class="solr.FloatPointField"
docValues="true"/><fieldType name="plong" class="solr.LongPointField"
docValues="true"/><fieldType name="pdouble" class="solr.DoublePointField"
docValues="true"/>*

Earlier until Solr6, it was int, float, long and double (*with out P at the
beginning*). I read in docs, old field type names are deprecated in Solr7
and have to use everything starting with "*P*" which enhances the
performances. Hence in this context,

1, The error I got
*java.lang.IllegalStateException:java.lang.IllegalStateException,
*Is it because my index data synced and upgraded contains old field type
names and new Solr7 schema contains new field type names..? Being
said, my IndexUpgrade
completed without any errors.

You *cannot* change the classes being used for your fields (which the fieldType changes you have described will do) on an existing index and expect Solr to work. If you change the class on a field, you must eliminate the current index and reindex from scratch.

2, How to sort out the error in 1, if my assessment correct.? Since my data
is too large such that it's hard to re-source or re-query, is there any
other work arounds to migrate the index if IndexUpgrade is not an option to
upgrade index to 7.

You would need to keep the schema the same for the upgrade, except that you would need to disable docValues on some of your fields to get rid of the error you encountered. You won't be able to take advantage of some of the new capability in the new version unless you re-engineer your config/schema and reindex.

Upgrading an index, especially through three major versions, is generally not recommended. I always reindex when upgrading Solr, especially to a new major version, because Solr evolves quickly.

Thanks,
Shawn

Reply via email to