我想从旧的solr.xml格式迁移到4.4中的核心自动发现,但是我遇到了在核心之间共享配置(solrconfig.xml,schema.xml和相关文件)的问题
我的旧solr.xml是这样的:
<?xml version="1.0" encoding="UTF-8" ?>
<solr persistent="true">
<cores defaultCoreName="core1" adminPath="/admin/cores">
<core instanceDir="."name="core1" dataDir="core/core1"/>
<core instanceDir="."name="core2" dataDir="core/core2"/>
...
</cores>
</solr>
目录结构:
solr.xml
conf
schema.xml
solrconfig.xml
...
core
core1
core2
...
一切都以这种方式完美运行,整个配置在核心之间共享。它正在工作,因为所有核心的实例目录都相同,并且conf目录在它下面。
使用4.4中的核心自动发现,不可能为所有核心使用相同的实例目录。虽然,我找到了一个有效的解决方案:
目录结构:
solr.xml
common
conf
schema.xml
solrconfig.xml
...
core
core1
core.properties
data
core2
core.properties
data
...
solr.xml:
<solr>
<str name="sharedLib">common</str>
</solr>
core.properties:
name=core1
它的工作原理是因为conf目录位于类路径中,这要归功于shareLib指令。但它并不完全令人满意,因为我无法在admin webapp中显示配置文件,我得到以下异常:
java.lang.NullPointerException
at org.apache.solr.handler.admin.ShowFileRequestHandler.showFromFileSystem(ShowFileRequestHandler.java:210)
at org.apache.solr.handler.admin.ShowFileRequestHandler.handleRequestBody(ShowFileRequestHandler.java:122)
at org.apache.solr.handler.RequestHandlerBase.handleRequest(RequestHandlerBase.java:135)
at org.apache.solr.core.SolrCore.execute(SolrCore.java:1904)
有没有更好的方法在4.4中的所有核心之间共享配置?
答案 0 :(得分:1)
我们遇到了同样的问题。我们尝试在core.properties文件夹中指定相对路径,但这不起作用。
我们最终要做的是在SOLRHome文件夹中创建一个conf文件夹,然后在core / conf目录中创建符号链接。
以下是我为创建符号链接而执行的命令:
ln -s ../../conf/solrconfig.xml solrconfig.xml
ln -s ../../conf/schema.xml schema.xml