首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在solr中动态地向集合添加碎片?

如何在solr中动态地向集合添加碎片?
EN

Stack Overflow用户
提问于 2013-03-28 09:23:12
回答 3查看 7.6K关注 0票数 2

在创建集合时,我使用以下查询为collection10设置了两个碎片。

/solr/admin/collections?action=CREATE&name=collection10&numShards=2&replicationFactor=2

但是我的要求是,在前两个碎片中索引了10000个文档之后,我必须动态地添加第三个碎片。

当我们在现有的碎片上开始收集和索引时,是否可以动态添加碎片?如果可能的话,这意味着如何在启动集合之后动态添加碎片一次?

此外,一旦我们启动了设置为collection.For的replicationFactor=2示例,是否可以动态添加副本,然后我需要为已经启动的集合启动新的复制。做得到吗?如果是的话,怎么做呢?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-09-20 00:11:23

票数 1
EN

Stack Overflow用户

发布于 2014-02-22 16:29:01

解决此问题的一个解决方案是在创建集合时使用“隐式路由器”。

Solr支持通过“隐式路由器”配置(创建集合API)向索引添加新碎片(或删除现有碎片)的能力。

假设-您必须将应用程序的所有“审核路径”数据索引到Solr中。每天都会添加新的数据。你可能很可能想要按年分拆。

在您的集合的初始设置过程中,您可以执行如下操作:

代码语言:javascript
复制
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年做准备--执行以下操作:

代码语言:javascript
复制
/admin/collections?
action=CREATESHARD&
shard=2015&
collection=AuditTrailIndex

上面的命令在同一个集合上创建一个新的碎片。

当其2015年时,所有数据都将自动编入" 2015“切分,前提是您的数据有正确填充到2015年的”年份“字段。

在2015年,如果您认为您不需要2010年的碎片(基于您的数据保留要求),那么您可以始终使用DELETESHARD API这样做:

代码语言:javascript
复制
/admin/collections?
action=DELETESHARD&
shard=2015&
collection=AuditTrailIndex

只有在创建集合时使用“隐式路由器”时,此解决方案才有效。当您使用默认的"compositeId路由器“(即用numshards参数创建的集合)时不工作。

这个特性确实是一个游戏-允许根据您的业务不断增长的需求动态添加碎片。

此功能是否可在弹性搜索中使用。如果没有,我相信他们会及时的。

票数 9
EN

Stack Overflow用户

发布于 2013-04-17 12:17:00

当前,一旦集合完成,您就无法添加新的碎片。

https://issues.apache.org/jira/browse/SOLR-3755

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15678142

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档