0

构建应用程序。现在我们有一个 Solr 服务器。但是我们希望设计该应用程序,以便将来如果我们超出索引需求,它可以支持多个 Solr 分片。

在开发未来可以支持多个分片的应用程序时,要记住哪些关键事项?

我们将 solr URL /solr/ 存储在数据库中。用于对 solr 执行查询。数据库中有一个用于更新的 URL,一个用于搜索的 URL

如果我们将来在 solr 环境中添加分片,使用分片的过程会像更新数据库中的 URL 一样简单吗?或者还有其他需要更新的东西。我们正在使用 SolrJ

例如,将 DB 中的 SolrSearchBaseURL 更改为:

https://solr2/solr/select?shards=solr1/solr,solr2/solr&indent=true&q={search_query}

并将数据库中的 SolrUpdateBaseURL 更新为

https://solr2/solr/

?

4

1 回答 1

1

基本上,您所描述的内容已经在 SolrCloud 中实现。ZooKeeper 在那里维护您的搜索集群的状态(哪些集合中的分片、分片副本、领导者和从属节点等等)。它可以通过使用散列来处理索引和查询方面的负载。

原则上,您可以(至少在集群增长开始时)使用您开发的系统。但是考虑复制、添加负载平衡器、外部缓存服务器(例如清漆):从长远来看,您最终会像 SolrCloud 一样自己实现。

话虽如此,使用基于哈希的索引并因此进行搜索有一些注意事项。如果你想在这一点上实现数据的逻辑分区(比如,按日期),除了制作自定义代码之外别无他法。不过,有一些工作计划围绕这一点进行。

于 2013-07-07T09:31:29.617 回答