" _version_字段必须存在于架构"中,但它已经

时间:2017-12-07 18:33:11

标签: solr

我已经接管了一个废弃的项目,该项目应该使用Solr进行搜索和索引,但Solr并没有正常工作。似乎有3个核心,其中没有一个有conf目录或schema.xml文件,因此我编写了下面的模式并将其粘贴到3个核心上。 conf

<?xml version="1.0" encoding="UTF-8" ?>
<schema name="mwplus_schema" version="1.6">

  <field name="_version_" type="long" indexed="true" stored="false" />
  <field name="pid" type="string" indexed="true" stored="true" required="true" multiValued="false"/>
  <field name="text" type="text" indexed="true" stored="true" multiValued="true"/>

  <uniqueKey>pid</uniqueKey>
  <defaultSearchField>text</defaultSearchField>
  <solrQueryParser defaultOperator="OR"/>

</schema>

如您所见,_version_字段存在,但是当我执行bin/solr start -f -p <port>时,由于此错误,无法创建使用此架构的3个核心:

Error creating core [xmeld_shard1_replica1]: Unable to use updateLog: _version_ field must exist in schema, using indexed="true" or docValues="true", stored="true" and multiValued="false" (_version_ does not exist)

对不起,我无法发布更多细节,我对Solr或项目本身并不太熟悉。关于为什么会发生这种情况以及如何解决问题的任何建议或想法?

编辑:我根据SO中另一个问题的答案更改了schema.xml,但问题依然存在。以上是更新版本。

2 个答案:

答案 0 :(得分:2)

您应该针对stored="true"字段类型在模式中设置_version_,它肯定会启动

e.g。

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

答案 1 :(得分:0)

您可能正在使用云模式(尽管命令行似乎没有指向那种方式)。如果这样做,您的架构将存储在Zookeeper中,而将一个架构放在文件系统上则无效。

访问管理界面并浏览各种概述页面,注意路径和工作目录信息。他们可能指向与您期望的不同的地方。即使它不处于云模式,您也可能正在使用共享配置(configset),这将在概述信息中反映出来,并且可能在core.properties文件中。

如果您处于云模式,请阅读参考指南中的相关指南,以获取有关如何更新架构的详细信息。虽然我不会修改任何东西,直到你确切知道你拥有的东西并支持它们。