【问题标题】:Solr 4.4.0 is giving error code 500Solr 4.4.0 给出错误代码 500
【发布时间】:2013-09-28 07:06:27
【问题描述】:

Solr 4.4.0 出现此错误 谁能帮帮我??

HTTP Status 500 - {msg=SolrCore 'collection1' is not available due to init failure: Unable to use updateLog: _version_field must exist in schema, using indexed="true" stored="true" and multiValued="false" (_version_ does not exist),trace=org.apache.solr.common.SolrException: SolrCore 'collection1' is not available due to init failure: 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.CoreContainer.getCore(CoreContainer.java:860)
at org.apache.solr.servlet.SolrDispatchFilter.doFilter(SolrDispatchFilter.java:251)
at org.apache.solr.servlet.SolrDispatchFilter.doFilter(SolrDispatchFilter.java:158)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:861)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:606)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
at java.lang.Thread.run(Thread.java:724) 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:835)
at org.apache.solr.core.SolrCore.<init>(SolrCore.java:629)
at org.apache.solr.core.CoreContainer.createFromLocal(CoreContainer.java:622)
at org.apache.solr.core.CoreContainer.create(CoreContainer.java:657)
at org.apache.solr.core.CoreContainer$1.call(CoreContainer.java:364)
at org.apache.solr.core.CoreContainer$1.call(CoreContainer.java:356)
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334)
at java.util.concurrent.FutureTask.run(FutureTask.java:166)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334)
at java.util.concurrent.FutureTask.run(FutureTask.java:166)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) ... 1 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:267)
at org.apache.solr.update.UpdateHandler.<init>(UpdateHandler.java:134)
at org.apache.solr.update.UpdateHandler.<init>(UpdateHandler.java:94)
at org.apache.solr.update.DirectUpdateHandler2.<init>(DirectUpdateHandler2.java:96)
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:526)
at org.apache.solr.core.SolrCore.createInstance(SolrCore.java:537)
at org.apache.solr.core.SolrCore.createUpdateHandler(SolrCore.java:607)
at org.apache.solr.core.SolrCore.<init>(SolrCore.java:819) ... 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:56)
at org.apache.solr.update.VersionInfo.<init>(VersionInfo.java:82)
at org.apache.solr.update.UpdateLog.init(UpdateLog.java:264) ... 23 more ,code=500}

【问题讨论】:

    标签: solr lucene solr4


    【解决方案1】:

    Solr 4.x 提供实时获取功能。为此,它会写入需要定义 _version 字段的更新日志。

    将此添加到&lt;fields&gt; tag in schema.xml

    <field name="_version_" type="long" indexed="true" stored="true"/>
    

    或者从你的 solrconfig.xml 中注释掉这个

      <requestHandler name="/get" class="solr.RealTimeGetHandler">
         <lst name="defaults">
           <str name="omitHeader">true</str>
           <str name="wt">json</str>
           <str name="indent">true</str>
         </lst>
      </requestHandler>
    

    请记住,如果您注释掉 /get 请求处理程序,您将无法获得实时获取并且还会错过 Optimistic Concurrency(在此处解释 - http://yonik.com/solr/optimistic-concurrency/

    【讨论】:

    • 不确定这是否特定于使用 Sunspot,但 field definition 在使用时有点不同:&lt;field name="_version_" type="string" indexed="true" stored="true" multiValued="false" /&gt;
    【解决方案2】:

    为了解决此问题而需要注释掉的正确行是: <updateLog> <str name="dir">${solr.ulog.dir:}</str> </updateLog>

    附: 我知道这是旧的,但仍然进入谷歌搜索的前 10 名。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-07-21
      • 2016-07-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多