gpt4 book ai didi

solr - 如何配置具有多个核心的 Solr 复制

转载 作者:行者123 更新时间:2023-12-04 05:25:12 24 4
gpt4 key购买 nike

我让 Solr 运行多个内核。
由于负载很重,我想设置一个包含完全相同索引的从站。

文档 http://wiki.apache.org/solr/SolrReplication声明“将复制请求处理程序添加到每个核心的 solrconfig.xml”,但我只有一个 solrconfig.xml。

我的配置:
配置:/data/solr/web/solr/conf/config 文件
数据:/data/solr/data/solr/core 数据目录

真的有必要为每个核心复制 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>

最佳答案

您需要做的是复制您在从属服务器上的 solr 实例,并在 solrconfig.xml 上配置复制处理程序。 .
最好使用不同的 instanceDir每个核心的目录,因为通常每个核心都有自己的schema.xmlsolrconfig.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>

如果您当前有多个内核但只有一个 solrconfig.xml,这应该是您的情况。 .
solrconfig.xml slaves上的replication部分需要包含master的url,包括核心名称,当然每个核心都不一样。但是您可以像这样使用占位符 ${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>

事实上,像 solr.core.name 这样的一些属性自动添加到 core scope您可以在配置中引用它们。因此,如果您没有任何特定于核心的设置,则每个核心的复制部分都可以相同。

此外,您可以为 master and slave 使用相同的配置。使用以下配置,只需更改分配给环境变量的值(true 或 false) enable.masterenable.slave基于你想做什么。我的意思是你可以使用同一个文件,但当然它会在不同的机器上,因为在同一台机器上拥有 master 和 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>

关于solr - 如何配置具有多个核心的 Solr 复制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13065341/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com