在多台计算机上扩展solr集合

时间:2015-07-17 15:21:03

标签: solr server distributed-computing sharding solrcloud

我正在尝试设置一个扩展到多个服务器的solr集合。如果我理解事物是正确的,我可以设置一个由分片组成的集合。那些碎片由复制品组成,复制品与核心相对应。请纠正我对此的理解。

确定。

所以我已经设置了solr,并且可以通过这样做在机器上创建一个集合。

bin/solr create_collection -c test_collection -shards 2 -replicationFactor 2 -d server/solr/configsets/basic_configs/conf

这似乎做对了,我能够检查健康并看到一​​些东西。我输入了

bin/solr healthcheck -c test_collection

我看到了分片信息。

现在我想要做的是,这是我坚持的部分,就是采用我创建的这个集合,并将其扩展到多个服务器上。我不确定我是否理解这是如何正常工作的,但我认为我想要做的是将shard1放在machine1上,将shard2放在machine2上。

我无法根据文档弄清楚如何做到这一点,尽管我很确定这是SolrCloud要解决的问题。有人可以给我一个正确的方向吗......?要么是跨多个服务器扩展集合的方法,要么是不这样做的原因。

2 个答案:

答案 0 :(得分:2)

当您说-shards 2时,您说您希望您的收藏品已经分成两个服务器。 -replicationFactor 2表示您希望这些分片至少存在于两台服务器上。

碎片是集合的一部分 - 没有碎片,您将无法访问所有文档。 replicationFactor指示集合中应该有多少副本可用于相同的分片(或#34;分区"有时候用于表示索引的一部分),因此两个副本的两个分片将最终有四个"核心"分布在可用的服务器上(这些"核心"由Solr内部管理)。

在同一群集中启动一组新的SolrCloud实例,您应该看到文档按预期分布在您的节点上。

答案 1 :(得分:1)

如前所述,分片是实际服务器中的集合(数据)的一部分。

当您运行该命令时,您已经要求将您的收藏分成两台机器 - 此时此时间。

一旦你添加了更多的机器(通过将它们注册到同一个zookeeper),你可以使用集合API来管理并将它们添加到折叠中。

https://cwiki.apache.org/confluence/display/solr/Collections+API

您可以将分片分成2个(或更多个)新分片。

您可以创建新分片或删除分片。

当然是问题 - 文件是如何在分片之间分开的?

创建集合时,可以定义router.name

router.name  - The router name that will be used. 
The router defines how documents will be distributed among the shards. 
The value can be either implicit, which uses an internal default hash, 
or compositeId, which allows defining the specific shard to assign documents to.     
When using the 'implicit' router, the shards parameter is required. 
When using the 'compositeId' router, the numShards parameter is required.
For more information, see also the section Document Routing.

这意味着 - 您可以定义分片数量(就像您所做的那样),或者采用完全不同的方法,通过文档ID中的前缀来区分分片。

有关第二种方法的详细信息,请参阅:https://cwiki.apache.org/confluence/display/solr/Shards+and+Indexing+Data+in+SolrCloud#ShardsandIndexingDatainSolrCloud-DocumentRouting