2013-03-20 6 views
13

Ich bekomme unten Fehler in meiner Solr-Konfiguration.Solr 4.2 - was ist _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 

Ich wollte wissen, dass das, was _version_field ist, und warum sein muss erforderlich?

Kann mir jemand dazu vorschlagen ??

Antwort

14

Das Feld _version_ ist ein internes Feld, das von der teilweisen Aktualisierungsprozedur, dem Aktualisierungsprotokollprozeß und von SolrCloud verwendet wird. Es wird nur intern für diese Prozesse verwendet, und die Angabe des Felds _version_ in Ihrer schema.xml sollte ausreichen.

Wenn Sie Informationen, wie genau möchten, was mit _version_ vorgeht, können Sie this website besuchen, um über die „Parallelität“ Update-Prozess zu lernen, die _version_ verwendet.

+0

Hat das Hinzufügen dieses Felds in das Schema Auswirkungen auf die Indexgröße? – Krunal

+0

@Krunal: Was wird Ihrer Meinung nach beim Hinzufügen eines zusätzlichen Attributs zu jedem Dokument passieren? – ashish

+0

@ashish, haben wir dies getestet, um die Auswirkungen auf die Indexgröße und die Leistung zu verstehen. Wir fanden keine signifikante Änderung der Indexgröße oder der Leistung. Daher haben wir uns entschlossen, das Feld in unser Schema zu übernehmen, um es in Zukunft für eine teilweise Aktualisierung zu nutzen. – Krunal

27

die unter Felddefinition hinzufügen inside „Feld“ Tag in schema.xml

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

Ich denke du meinst 'typr =" slong "'. 'lang' scheint auf Solr 4.4 nicht zu funktionieren. –

+0

tatsächlich gab es keine Notwendigkeit, Versionsfeld früher zu definieren, ist es obligatorisch, wenn solr Feature hinzugefügt, um Dokument teilweise zu aktualisieren – ashish

+0

@SalvatoreIovene mit 4.10, 'slong' hat nicht funktioniert, aber 'lang' tat. – mrmuggles

1

Wenn Sie es entfernen, müssen Sie auch die Transaktion von solrconfig.xml Anmeldung entfernen. Siehe die link.