我有Solr运行多个核心.由于负载很重,我想设置一个包含完全相同索引的从站.
文档http://wiki.apache.org/solr/SolrReplication指出"为每个核心添加复制请求处理程序到solrconfig.xml",但我只有一个solrconfig.xml.
我的配置:
配置:/ data/solr/web/solr/conf/config文件
数据:/ data/solr/data/solr/core data dirs
是否真的有必要为每个核心复制solrconfig.xml?
我应该在哪里放置这些多个solrconfig文件?
solr.xml
<?xml version="1.0" encoding="UTF-8" ?>
<solr persistent="true">
<property name="dih.username" value="user"/>
<property name="dih.password" value="passwd"/>
<property name="jdbclib" value="/usr/progress/dlc102b/java"/>
<property name="dih.dburl" value="jdbc:datadirect:openedge://172.20.7.218:31380;databaseName=easource"/> <cores adminPath="/admin/cores">
<core instanceDir="/data/solr/web/trunk/" name="product" dataDir="/data/solr/data/trunk/product-swap">
<property name="dih-config" value="dih-config-product.xml"/>
</core>
<core instanceDir="/data/solr/web/trunk/" name="product-swap" dataDir="/data/solr/data/trunk/product">
<property name="dih-config" value="dih-config-product.xml"/>
</core>
<core instanceDir="/data/solr/web/trunk/" name="periodp" dataDir="/data/solr/data/trunk/periodp">
<property name="dih.config" value="dih-config-periodp.xml"/>
</core>
<core instanceDir="/data/solr/web/trunk/" name="periodp-swap" dataDir="/data/solr/data/trunk/periodp-swap">
<property name="dih.config" value="dih-config-periodp.xml"/>
</core>
</cores>
</solr>
Run Code Online (Sandbox Code Playgroud)
jav*_*nna 16
您需要做的是复制从属服务器上的solr实例并在其上配置复制处理程序solrconfig.xml.最佳做法是instanceDir为每个核心建立一个不同的目录,因为通常每个核心都有自己的schema.xml和solrconfig.xml.无论如何,你可以使用相同的配置只是配置你solr.xml指向相同instanceDir但不同的dataDir,你dataDir在你的配置solrconfig.xml:
<solr persistent="true" sharedLib="lib">
<cores adminPath="/admin/cores">
<core name="core0" instanceDir="core">
<property name="dataDir" value="/data/core0" />
</core>
<core name="core1" instanceDir="core">
<property name="dataDir" value="/data/core1" />
</core>
</cores>
</solr>
Run Code Online (Sandbox Code Playgroud)
如果您目前有多个核心但只有一个,那么这应该是您的情况solrconfig.xml.
在solrconfig.xml上从站复制部需要包含主的网址,包括核心名称,这当然是对每个芯不同.但您可以像这样使用占位符$ {solr.core.name}:
<requestHandler name="/replication" class="solr.ReplicationHandler" >
<lst name="slave">
<str name="masterUrl">http://master_host:port/solr/${solr.core.name}/replication</str>
<str name="pollInterval">00:00:20</str>
</lst>
</requestHandler>
Run Code Online (Sandbox Code Playgroud)
实际上,某些属性solr.core.name会自动添加到核心范围中,您可以在配置中引用它们.因此,如果您没有任何核心特定设置,则每个核心的复制部分可以相同.
此外,您可以使用以下配置对主服务器和从服务器使用相同的配置,只需更改分配给环境变量的值(true或false),enable.master并enable.slave根据您的操作进行更改.我的意思是你可以使用相同的文件,但当然它将在不同的机器上,因为在同一台机器上拥有主机和从机是没有多大意义的.
<requestHandler name="/replication" class="solr.ReplicationHandler" >
<lst name="master">
<str name="enable">${enable.master:false}</str>
<str name="replicateAfter">commit</str>
</lst>
<lst name="slave">
<str name="enable">${enable.slave:false}</str>
<str name="masterUrl">http://master_host:8983/solr/${solr.core.name}/replication</str>
<str name="pollInterval">00:00:60</str>
</lst>
</requestHandler>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8813 次 |
| 最近记录: |