在创建集合时,我使用以下查询为collection10设置了两个碎片。
/solr/admin/collections?action=CREATE&name=collection10&numShards=2&replicationFactor=2
但是我的要求是,在前两个碎片中索引了10000个文档之后,我必须动态地添加第三个碎片。
当我们在现有的碎片上开始收集和索引时,是否可以动态添加碎片?如果可能的话,这意味着如何在启动集合之后动态添加碎片一次?
此外,一旦我们启动了设置为collection.For的replicationFactor=2示例,是否可以动态添加副本,然后我需要为已经启动的集合启动新的复制。做得到吗?如果是的话,怎么做呢?
发布于 2013-09-20 00:11:23
现在可以使用Solr 4.4.0 (4.3中引入的特性):
https://cwiki.apache.org/confluence/display/solr/Collections+API#CollectionsAPI-SplitaShard
发布于 2014-02-22 16:29:01
解决此问题的一个解决方案是在创建集合时使用“隐式路由器”。
Solr支持通过“隐式路由器”配置(创建集合API)向索引添加新碎片(或删除现有碎片)的能力。
假设-您必须将应用程序的所有“审核路径”数据索引到Solr中。每天都会添加新的数据。你可能很可能想要按年分拆。
在您的集合的初始设置过程中,您可以执行如下操作:
admin/collections?
action=CREATE&
name=AuditTrailIndex&
router.name=implicit&
shards=2010,2011,2012,2013,2014&
router.field=year上面的命令: a)创建5个碎片,每个碎片分别用于当前和最后4年(20101,2012,2013年,2014年b),根据“年份”字段(指定为router.field)的值将数据路由到正确的碎片。
2014年12月,您可以使用CREATESHARD API (集合API的一部分)添加一个新的碎片,为2015年做准备--执行以下操作:
/admin/collections?
action=CREATESHARD&
shard=2015&
collection=AuditTrailIndex上面的命令在同一个集合上创建一个新的碎片。
当其2015年时,所有数据都将自动编入" 2015“切分,前提是您的数据有正确填充到2015年的”年份“字段。
在2015年,如果您认为您不需要2010年的碎片(基于您的数据保留要求),那么您可以始终使用DELETESHARD API这样做:
/admin/collections?
action=DELETESHARD&
shard=2015&
collection=AuditTrailIndex只有在创建集合时使用“隐式路由器”时,此解决方案才有效。当您使用默认的"compositeId路由器“(即用numshards参数创建的集合)时不工作。
这个特性确实是一个游戏-允许根据您的业务不断增长的需求动态添加碎片。
此功能是否可在弹性搜索中使用。如果没有,我相信他们会及时的。
发布于 2013-04-17 12:17:00
当前,一旦集合完成,您就无法添加新的碎片。
https://stackoverflow.com/questions/15678142
复制相似问题