使用solr中的集合API在集合中添加分片

时间:2014-11-17 14:24:39

标签: collections solr sharding

我正在使用 Apache solr 来创建集合分片。我可以使用

构建集合
sudo curl 'http://localhost:8983/solr/admin/collections?action=CREATE&name=demo&numShards=2&replicationFactor=1'

在这里,集合名称="演示" 碎片数=" 2"

但是当我使用

添加新分片时
sudo curl 'http://localhost:8983/solr/admin/collections?action=CREATESHARD&shard=shard3&collection=demo'

提供错误

<?xml version="1.0" encoding="UTF-8"?>
<response>
<lst name="responseHeader"><int name="status">400</int><int name="QTime">1</int></lst><lst name="error"><str name="msg">shards can be added only to 'implicit' collections</str><int name="code">400</int></lst>
</response>

2 个答案:

答案 0 :(得分:2)

来自the documentation for CREATESHARD

  

Shards只能使用此API为使用“隐式”路由器的集合创建。使用'compositeId'路由器将SPLITSHARD用于集合。可以为现有的“隐式”集合创建具有名称的新分片。

因此,执行此操作的正确方法是发出SPLITSHARD命令,然后在创建两个新分片后删除旧分片。从SPLITSHARD文档:

  

拆分碎片将获取现有碎片并将其分成两部分。原始分片将继续包含相同的数据,但它将开始将请求重新路由到新分片。新分片将具有与原始分片一样多的副本。拆分分片后,您应该发出提交以使文档可见,然后您可以在准备好时删除原始分片(使用Core API或Solr Admin UI)。

答案 1 :(得分:0)

只能使用此 API 为使用“隐式”路由器的集合创建分片(即,在创建集合时,router.name=implicit)。可以为现有的“隐式”集合创建具有名称的新分片。

参考,https://solr.apache.org/guide/8_6/collection-management.html