Apache spark 是否有可能在亚秒的时间内切换到Solr新索引?
我想了一段时间了。假设我有一个solr实现,它有一个非常大的索引,由于每天导入新数据,所以必须每晚重建索引。可以将新数据索引到“离线”索引中,然后在完全索引后切换到新索引的作业吗?这基本上意味着我的搜索索引只会被搜索,而不会实时更新——只有在新索引被切换时 提前感谢您的回复。Apache spark 是否有可能在亚秒的时间内切换到Solr新索引?,apache-spark,indexing,solr,batch-processing,Apache Spark,Indexing,Solr,Batch Processing,我想了一段时间了。假设我有一个solr实现,它有一个非常大的索引,由于每天导入新数据,所以必须每晚重建索引。可以将新数据索引到“离线”索引中,然后在完全索引后切换到新索引的作业吗?这基本上意味着我的搜索索引只会被搜索,而不会实时更新——只有在新索引被切换时 提前感谢您的回复。 --MG在这种情况下,您需要创建两个核心 SearchCore-用于搜索 索引核心-用于索引 在索引核心中成功完成索引时。您需要将索引核心与搜索核心进行交换 http://localhost:8983/solr/adm
--MG在这种情况下,您需要创建两个核心
- SearchCore-用于搜索
- 索引核心-用于索引
http://localhost:8983/solr/admin/cores?action=SWAP&core=IndexingCore&other=SearchCore
在此之后,SearchCore将指向IndexingCore数据目录,反之亦然。然后您可以卸载索引核心,这样它就不会消耗内存
http://localhost:8983/solr/admin/cores?action=UNLOAD&core=IndexingCore
在这种情况下,您需要创建两个核心
- SearchCore-用于搜索
- 索引核心-用于索引
http://localhost:8983/solr/admin/cores?action=SWAP&core=IndexingCore&other=SearchCore
在此之后,SearchCore将指向IndexingCore数据目录,反之亦然。然后您可以卸载索引核心,这样它就不会消耗内存
http://localhost:8983/solr/admin/cores?action=UNLOAD&core=IndexingCore
我将通过以下方式解决此问题(假设您使用的是Solrcloud):
如果您不是在讨论同一集群或solr服务器上的核心或集合,请不要使用solr来分发请求(这将要求您保持一个专用solr服务器在线,只将其用作切分端点,而不做任何有用的事情)
使用常规HTTP负载平衡器并将其指向活动的Solr服务器。在将负载切换到Solr服务器之前,请确保在Solr服务器上使用适当的带新索引的warming查询(以避免在服务器联机时执行缓慢的查询)。负载平衡器还可以向这两个节点发送查询(但只返回主服务器的响应),让您在动态预热新服务器的同时,仍然为来自旧服务器的请求提供服务。如果您不是在同一集群或solr服务器上谈论核心或集合,请不要使用solr来分发请求(这将要求您保持一个专用的Solr服务器在线,只将其用作切分端点,而不做任何有用的事情)
使用常规HTTP负载平衡器,并将其指向活动的Solr服务器。在将负载切换到Solr服务器之前,请确保在Solr服务器上使用带有新索引的适当暖化查询(以避免服务器联机时查询速度慢)。负载平衡器还可以向两个节点发送查询(但只返回主服务器的响应),以便在仍为旧服务器的请求提供服务的同时动态预热新服务器。让我们看看两种主要的可能情况: 单个Solr实例
[2] 让我们看看两种主要的可能情况: 单个Solr实例
[2]有趣。什么版本的SOLR支持这些操作?谢谢你的回答。理论上,我可以使用这种策略交换一堆不同的内核,对吗?而且这些内核不必在同一个solar实例上,对吧?它们只需要有相同的模式?@Griff你使用的是哪个版本的SOLR?Bu有一点是肯定的,这些特性在Solr 4中可用,