如何通过Tomcat重新启动来阻止Solr核心被删除

时间:2014-10-22 13:40:41

标签: tomcat solr lucene tomcat7 solr4

我在Tomcat-7上运行Solr-4.10.1。我已在schema.xml中放置了必要的solrconfig.xml/usr/share/solr/data/test/conf,并使用以下方式创建了新核心:

curl --request POST 'xx.xx.xx.xx:8080/solr/admin/cores' --data "action=CREATE&name=test&instanceDir=/usr/share/solr/data/test&config=solrconfig.xml&schema=schema.xml&dataDir=/usr/share/solr/data/test"
从命令行

。然后我可以写入并读取核心,但是当我重新启动Tomcat时,核心就会消失。

readpersist=true置于solr.xml修复了该问题,不过我也读过很快就会弃用herehere

  

solr.xml

不再支持持久属性

有人知道如何为最新版本的Solr保留核心吗?

编辑:

以下是位于solr.xml的{​​{1}}的内容。

/etc/tomcat7/Catalina/localhost/solr.xml

2 个答案:

答案 0 :(得分:3)

解决方案:

Tomcat的默认solr.xml表示Solr使用/usr/share/solr/example/multicore作为数据目录,而不是我放置新核心的地方。我将/etc/tomcat7/Catalina/localhost/solr.xml更改为指向/usr/share/solr/data处的新数据目录:*

<Context docBase="/usr/share/solr/example/multicore/solr.war" debug="0" crossContext="true">
  <Environment name="solr/home" type="java.lang.String" value="/usr/share/solr/data" override="true" />
</Context>

在我的新数据目录中,我创建了一个新的solr.xml,其中包含以下内容,我从/usr/share/solr/example/solr/solr.xml安装时提供的示例中复制了这些内容(此处修改了注释)。它都是默认的样板。

<?xml version="1.0" encoding="UTF-8" ?>
<solr>

  <solrcloud>
    <str name="host">${host:}</str>
    <int name="hostPort">${jetty.port:8983}</int>
    <str name="hostContext">${hostContext:solr}</str>
    <int name="zkClientTimeout">${zkClientTimeout:30000}</int>
    <bool name="genericCoreNodeNames">${genericCoreNodeNames:true}</bool>
  </solrcloud>

  <shardHandlerFactory name="shardHandlerFactory"
    class="HttpShardHandlerFactory">
    <int name="socketTimeout">${socketTimeout:0}</int>
    <int name="connTimeout">${connTimeout:0}</int>
  </shardHandlerFactory>

</solr>

这是新式的solr.xml,因此核心发现正在进行中。有关详细信息,请参阅this link

最后,我在每个核心的根目录中放置一个空的core.properties,我希望在重启时发现它,例如在/usr/share/solr/data/mycore/core.properties。核心现在通过Tomcat重新启动而持续存在。

非常感谢@ alexandre-rafalovitch的帮助并指出了我正确的方向 - 请参阅问题下面的评论。

*:观察者的注释:我已将solr.war留在原来的位置,因为它与手头的事情无关。

答案 1 :(得分:0)

我的solr应用程序正在jetty上运行。我尝试了一切,但没有任何工作。然后我意识到我的应用程序是在“多核”部分下创建的。我试过两件事: 一个。我将solr.xml(\ example \ multicore)修改为:

<solr persistent="true" sharedLib="lib">

b。我用

重启了我的start.jar
java -Dsolr.solr.home=multicore -jar start.jar

它有效。希望它有所帮助。