2013-03-20 7 views
13

Sto ottenendo sotto l'errore nella mia configurazione di solr.Solr 4.2 - che cos'è _version_field?

Caused by: org.apache.solr.common.SolrException: Unable to use updateLog: _version_field must exist in schema, using indexed="true" stored="true" and multiValued="false" (_version_ does not exist) 
     at org.apache.solr.core.SolrCore.<init>(SolrCore.java:806) 
     at org.apache.solr.core.SolrCore.<init>(SolrCore.java:619) 
     at org.apache.solr.core.CoreContainer.createFromLocal(CoreContainer.java:1021) 
     at org.apache.solr.core.CoreContainer.create(CoreContainer.java:1051) 
     ... 10 more 
Caused by: org.apache.solr.common.SolrException: Unable to use updateLog: _version_field must exist in schema, using indexed="true" stored="true" and multiValued="false" (_version_ does not exist) 
     at org.apache.solr.update.UpdateLog.init(UpdateLog.java:245) 
     at org.apache.solr.update.UpdateHandler.initLog(UpdateHandler.java:84) 
     at org.apache.solr.update.UpdateHandler.<init>(UpdateHandler.java:134) 
     at org.apache.solr.update.DirectUpdateHandler2.<init>(DirectUpdateHandler2.java:95) 
     at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) 
     at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57) 
     at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) 
     at java.lang.reflect.Constructor.newInstance(Constructor.java:532) 
     at org.apache.solr.core.SolrCore.createInstance(SolrCore.java:526) 
     at org.apache.solr.core.SolrCore.createUpdateHandler(SolrCore.java:597) 
     at org.apache.solr.core.SolrCore.<init>(SolrCore.java:790) 
     ... 13 more 
Caused by: org.apache.solr.common.SolrException: _version_field must exist in schema, using indexed="true" stored="true" and multiValued="false" (_version_ does not exist) 
     at org.apache.solr.update.VersionInfo.getAndCheckVersionField(VersionInfo.java:57) 
     at org.apache.solr.update.VersionInfo.<init>(VersionInfo.java:83) 
     at org.apache.solr.update.UpdateLog.init(UpdateLog.java:242) 
     ... 23 more 

Volevo sapere che ciò che è _version_field, e perché il suo must richiesto?

Qualcuno mi può suggerire su questo ??

risposta

14

Il campo _version_ è un campo interno utilizzato dalla procedura di aggiornamento parziale, dal processo di registro di aggiornamento e da SolrCloud. Viene utilizzato solo internamente per tali processi e la semplice fornitura del campo _version_ nello schema.xml dovrebbe essere sufficiente.

Se vuoi informazioni da esattamente ciò che sta succedendo con _version_, è possibile visitare this website per conoscere il processo di aggiornamento "ottimista concorrenza", che utilizza _version_.

+0

L'aggiunta di questo campo nello schema ha alcun impatto sulla dimensione dell'indice? – Krunal

+0

@Krunal: cosa pensi che accadrà aggiungendo un attributo extra a ciascun documento? – ashish

+0

@ashish, abbiamo testato questo per capire l'impatto sulla dimensione dell'indice e le prestazioni. Non abbiamo riscontrato alcun cambiamento significativo nella dimensione dell'indice né nelle prestazioni. Quindi abbiamo deciso di lasciare il campo nel nostro schema per renderlo supportato da un aggiornamento parziale in futuro. – Krunal

27

aggiungere la definizione campo sottostante all'interno del tag "campo" in schema.xml

<field name="_version_" type="long" indexed="true" stored="true" multiValued="false"/> 
+0

Penso che tu intenda 'typr =" slong "'. 'a lungo non sembra funzionare su Solr 4.4. –

+0

in realtà non è stato necessario definire il campo versione in precedenza, è obbligatorio quando la funzione solr aggiunto per aggiornare il documento parzialmente – ashish

+0

@SalvatoreIovene con 4.10, 'slong' non ha funzionato, ma 'long' ha fatto. – mrmuggles

1

Se si rimuove, è necessario rimuovere anche la registrazione delle transazioni da solrconfig.xml. Vedi lo link.