Solr集群管理控制中,有添加分片和主备的配置,但是控制台上面,好象没有,句话疼。。。。文章中做了关于solr集群的集合(Collection)、分片(shards)、副本(replication)的添加和删除操作的实验。api其实挺简单的,就是一顿的复制粘贴,修改分片的参数。
创建集合
案例1
创建一个两片的collection,每片是一主一备。
使用以下命令创建:
http://192.168.66.100:8081/solr/admin/collections?action=CREATE&name=collection2&numShards=2&replicationFactor=2
参数说明
参数 |
名称 |
action |
CREATE(创建集合)(DELETE 删除集合) |
name |
集合的名称 |
numShards |
几片 |
replicationFactor |
备份 |
查看管控台
案例2
#创建3个分片,每个分片有3个副本数,(最大总分片副本数 3*4 = 12 )
http://192.168.66.100:8081/solr/admin/collections?action=CREATE&name=collection2&numShards=3&replicationFactor=3&maxShardsPerNode=3&collection.configName=myconf
#createNodeSet 指定core,也就是主节点的地址
http://192.168.66.100:8081/solr/admin/collections?action=CREATE&name=collection3&numShards=3&replicationFactor=3&maxShardsPerNode=3&collection.configName=myconf&createNodeSet=192.168.66.100:8081_solr,192.168.66.100:8082_solr,192.168.66.100:8083_solr
参数说明
参数 |
名称 |
action |
CREATE(创建集合)(DELETE 删除集合) |
name |
集合的名称 |
numShards |
集合创建时需要创建逻辑分片的个数 |
replicationFactor |
分片的副本数。replicationFactor(复制因子)为 3 意思是每个逻辑分片将有 3 份副本。 |
maxShardsPerNode |
默认值为1,每个Solr服务器节点上最大分片数(4.2新增的) |
createNodeSet |
如果不提供该参数,那么会在所有活跃节点上面创建core,如果提供该参数就会在指定的solr节 |
备注:注意三个数值:numShards、replicationFactor、liveSolrNode(当前存活的solr节点,也就是运行的节点),一个正常的solrCloud集群不容许同一个liveSolrNode上部署同一个shard的多个replic,因此当maxShardsPerNode=1时,numShards*replicationFactor>liveSolrNode
时,报错。因此正确时因满足以下条件:numShards*replicationFactor<liveSolrNode*maxShardsPerNode
指定节点后的创建效果,感觉createNodeSet 配置没生效,
添加分片(shard)
#给collection1 添加分片,同时还创建一份副本
http://192.168.66.100:8081/solr/admin/cores?action=CREATE&name=shard2_replica1&instanceDir=shard2_replica1&dataDir=data&collection=collection1&shard=shard2&collection.configName=myconf
参数说明
参数 |
名称 |
action |
CREATE(创建分片)(DELETE 删除分片) |
name |
分片的名称(有命名规则的shard1_replica1 表示1一个分片的第一个备份) |
instanceDir |
集合创建时需要创建逻辑分片的个数(同上) |
dataDir |
数据存储地址 |
collection |
需要创建分片的集合 |
shard |
分片名称(如果没有这个分片,就会创建分片,有就会在分片下面添加副本) |
collection.configName |
配置名称 |
则命名如下:
#命名规则
#创建pscp的集合,2个分片,每个分片上面有两个备份
shard1_replica1
shard1_replica2
shard2_replica1
shard2_replica2
又添加了一条副本
添加副本(replication)
#上面这句话的意思就是在collection1这个集合的shard2分片上添加一个副本,副本的地址在192.168.66.100:8082_solr台机子上面
http://192.168.66.100:8081/solr/admin/collections?action=ADDREPLICA&collection=collection1&shard=shard1&node=192.168.66.100:8082_solr
#--------------------------------------------------------
#创建shard7 给shar1创建一个备份,这是第二种创建方式(这种方式等同于创建分片的方式)
http://192.168.66.100:8083/solr/admin/cores?action=CREATE&name=shard1_replica7&instanceDir=shard1_replica7&dataDir=data&collection=collection1&shard=shard1&collection.configName=myconf
参数说明
参数 |
名称 |
action |
ADDREPLICA(创建副本) |
collection |
集合名称 |
shard |
哪个分片的副本 |
node |
创建在哪个节点上 |
创建结果
删除collection
删除刚刚建立的collection2 节点
#删除集合
http://192.168.66.100:8081/solr/admin/collections?action=DELETE&name=collection2
#删除副本
http://192.168.66.100:8083/solr/admin/cores?action=DELETE&name=shard1_replica7
查看管控台的节点信息
删除分片
#删除第一个collection1集合的shard1分片
http://192.168.66.100:8083/solr/admin/collections?action=DELETESHARD&collection=collection1&shard=shard1
删除副本
#删除collection1 中的shard2中的core_node10副本
http://192.168.66.100:8083/solr/admin/collections?action=DELETEREPLICA&collection=collection1&shard=shard2&replica=core_node10
副本的名称是从tree里面查看到的,不是瞎写的
删除后,就只剩下2个节点了
拆分分片
#拆分分片,俺的报错了、、
http://192.168.66.100:8083/solr/admin/collections?action=SPLITSHARD&collection=collection1&shard=shard2
重新加载
重新加载: name 表示的是集合的名称
http://192.168.66.100:8081/solr/admin/collections?action=RELOAD&name=collection2