关于Solr Sharding的问题

caa*_*os0 2 solr sharding

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

到现在为止还挺好.

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

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

  1. 是否可以通过"每个产品的一个产品索引"或类似的东西来拆分索引?如果是的话,你怎么建议我这样做?

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

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

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

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

提前致谢.

Mat*_*ndh 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 =仅保留索引中所有文档的子集的服务器,core =一个服务器上的一个索引 - 服务器可能包含多个核心,其中每个核心是一组独立的配置和模式(以前​​只能有一个核心)在每个Solr实例中--Solr只有一个索引,仅此而已.SolrCloud首次发布Solr 4.0,并开始获得一些牵引力.

Solr的维基是开始挖掘这些概念的更多信息的好地方.