我正在使用 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>
答案 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