我想从旧的 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>
核心属性:
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 中的所有内核之间共享配置?