我一直想着的东西。假设我有一个索引非常大的solr实现,并且由于每天导入的新数据,必须每晚重建索引。可以有一个工作,将新数据索引到一个索引,即离线"当它完全索引时切换到新索引?这实际上意味着我的搜索索引只会被搜索并且永远不会实时更新 - 只有当新索引被切换时才会被更新。
提前感谢任何/所有回复。 - MG
答案 0 :(得分:1)
在这种情况下,您需要创建两个核心。
在 IndexingCore 中成功完成索引编制。您需要交换 IndexingCore与 SearchCore 。
http://localhost:8983/solr/admin/cores?action=SWAP&core=IndexingCore&other=SearchCore
此SearchCore将指向IndexingCore数据目录,反之亦然。然后你可以卸载 IndexingCore,这样它就不会占用内存。
http://localhost:8983/solr/admin/cores?action=UNLOAD&core=IndexingCore
答案 1 :(得分:1)
我会用Aliases解决这个问题(假设您使用的是Solrcloud):
答案 2 :(得分:1)
让我们看看两种主要的可能情景:
单个Solr实例
/ solr的/管理/芯动作= SWAP&安培;核心= A和其他= B
N.B。您搜索客户端将始终指向A
SolrCloud架构
/管理/集动作= CREATEALIAS&安培;命名= online_search&安培;集合= A 注:您搜索客户端将访问' online_search'端点。
/管理/集动作= CREATEALIAS&安培;命名= online_search&安培;集合= B 5.现在集合A离线
[1] https://cwiki.apache.org/confluence/display/solr/CoreAdmin+API#CoreAdminAPI-SWAP
答案 3 :(得分:0)
如果您不是在谈论同一群集或solr服务器上的核心或集合,请不要使用Solr来分发请求(这需要您将专用的Solr服务器保持在线才能使用它作为一个分片端点,没有做任何有用的事情)。
使用常规HTTP负载均衡器并将其指向活动的Solr服务器。在将负载切换到它之前,请务必使用新索引在Solr服务器上使用正确的加温查询(以避免在服务器联机时进行慢速查询)。负载均衡器也可以向两个节点发送查询(但只返回主服务器的响应),以便在仍然为旧服务器提供请求时动态加热新服务器。