我在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时,核心就会消失。
我read将persist=true
置于solr.xml
修复了该问题,不过我也读过很快就会弃用here和here :
solr.xml
不再支持持久属性
有人知道如何为最新版本的Solr保留核心吗?
以下是位于solr.xml
的{{1}}的内容。
/etc/tomcat7/Catalina/localhost/solr.xml
答案 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.jarjava -Dsolr.solr.home=multicore -jar start.jar
它有效。希望它有所帮助。