关于Solr Sharding的问题

时间:2012-11-29 16:17:50

标签: solr sharding

我们有一个产品(我们称之为'prod1'),我们希望与另一个产品“整合”(让我们称之为'prod2'),当“整合”意味着prod1 + prod2将是“prod3” 。 我们还有一些计划在prod3中添加更多“产品”。

到目前为止一切顺利。

我们使用Solr为这两种产品中的用户提供搜索,并且这两个索引可能非常非常大并且接收大量呼叫/秒。如果我们将所有内容都放在一台服务器上,那么吞吐量就会很糟糕。

所以,我们考虑使用分片(我相信这是正确的术语,对不起,如果我错了),但是,我有一些问题:

  1. 是否可以将索引拆分为“每台机器一个产品索引”或类似的东西?如果是,您如何建议我这样做?

  2. 如果(问题1 == true)那么让我们假设prod1索引是machine1,prod2索引machine2,我可以在machine1和2中搜索“合并”结果与分数,偏移等,以“简单”和正确的方式?

  3. 我读过一些关于复制因素的内容,但我认为我并不理解。它的目的是什么?

  4. 我不确定我是否在这里使用了正确的术语,所以,也许有人可以澄清核心,碎片等究竟是什么。这种“简单”的疑问在我的行列中引起了很多误解。队。

  5. 到现在为止,这是个问题。也许我稍后会编辑它并添加更多内容。

    提前致谢。

1 个答案:

答案 0 :(得分:8)

按顺序回答您的问题:

  1. 由您决定如何分发文档。您可以选择要将文档编入索引的服务器,以及是否决定对一个产品索引pr执行此操作。服务器,这是您的决定(根据文档源自哪个产品,选择用于索引的服务器)。

  2. 是。发送给Solr的查询字符串的shards = -parameter指示应搜索哪些服务器并将其合并为一个响应。只要你没有看到作为一个可能的问题高位进入抵消,这应该不是一个问题(高负责的问题是Solr必须从每个服务器检索到(偏移)文档,才能够在所有分片上进行评分)。

    碎片= server1的:8080 / solr的/ corename,服务器2:8080 / solr的/ corename

  3. 复制因子与SolrCloud相关,它隐藏了手动分片的一些复杂性(但也介绍了一些)。使用SolrCloud Solr将自行确定要用于存储的节点,复制因子告诉Solr您要将文档存储在多少服务器上。如果复制因子为3,则在文档无法访问之前,至少有三台服务器必须失败。如果您正在进行手动分片,则必须自己设置复制,并且知道哪些服务器是备份服务器,就像使用常规Solr设置一样。

  4. Shard =仅保留索引中所有文档的子集的服务器,核心=一台服务器上的一个索引 - 服务器可能包含多个核心,其中每个核心是一组独立的配置和架构(以前你在每个Solr实例中只能有一个核心--Solr只有一个索引而已。 SolrCloud首次在Solr 4.0上发布,并开始获得一些牵引力。

  5. Solr Wiki是一个开始挖掘有关这些概念的更多信息的好地方。

相关问题