1、Collection常用操作 api
1.1创建
http://192.168.1.35:9999/solr/admin/collections?action=CREATE&name=searchTest&numShards=4&replicationFactor=1&collection.configName=search
参数说明:
name:collection的名称
numShards:指定分片数量(slices)replicationFactor:指定每个Shard副本数量maxShardsPerNode:每个Solr服务器节点上最大Shard数量,默认值为1注意三个数值:numShards、replicationFactor、liveSolrNode,一个正常的solrCloud集群不容许同一个liveSolrNode上部署同一个shard的多个replic,因此当maxShardsPerNode=1时,numShards*replicationFactor>liveSolrNode时,报错
因此正确时因满足以下条件:numShards*replicationFactor<liveSolrNode*maxShardsPerNode
collection.configName:指定该collection使用那份config,这份config必须存在于zk中。
createNodeSet:暂时不进行任何的 Shard 和 Replica 创建时,你需要添加额外的createNodeSet=EMPTY 参数
autoAddReplicas:赋值为true 即开启自动创建Replica
1.2修改
/admin/collections?action=MODIFYCOLLECTION&collectio=<collection-name>&<attributename>=<attribute-value>
参数说明:
action=MODIFYCOLLECTION 参数表示执行修改 Collection 操作,
collection 参数用来指定你需要对哪个 Collection 进行修改 。 <attribute-name>=<attribute-value>用于覆盖Collection创建时的一些参数,支持覆盖的参数有 : maxShardsPerNode 、 replicationFactor 、 autoAddReplicas 、 collection.configName 、 rule 、 snitch 。
1.3 删除Collection
http://localhost:8983/solr/admin/collections?action=DELETE&name=newCollection
参数说明:name :表示想要删除的collection名称
async:通过制定一个异步请求ID,来开启异步操作
1.4 创建Collection别名
http://localhost:8983/solr/admin/collections?action=CREATEALIAS&name=testalias&collections=anothe
rCollection,testCollection参数说明:name:表示别名
collections:参数表示collection名称,可以为多个Collection指定一个别名,多个Collection之间名称采用逗号分隔。
async:CREATEALIAS支持异步请求。
1.5 删除Collection别名
/admin/collections?action=DELETEALIAS&name=name
说明:删除一个或者多个Collection对应的别名的API接口name:表示别名
1.6 备份与恢复
备份接口地址:
/admin/collections?action=BACKUP&name=myBackupName&collection=myCollectionName&location=/path/to/my/shared/drive
参数说明:name 参数表示备份名称,可以随意定义
collection 参数表示你需要对哪个 Collection执行备份操作location 表示你需要将 Coll巳ction 备份文件保存到文件系统的什么路径下恢复接口地址:
如果指定的目标Collection不存在,则其会自动创建,注意你不能对一个正在进行备份的Collection执行恢复操作 。
备份恢复生成一个新Collection之后,生成的目标CQllection与原Collection拥有相同的Shard和Replica,以及相同的文档路由信息 。 如果原Collection关联的配置文件目录在Zookeeper上存在,那么两者会共用一份,否则目标Collection会上传本地备份的配置文件到Zookeeper/admin/collections?action=RESTORE&name=myBackupName&location=/path/to/my/shared/drive&collec
tion=myRestoredCollectionName参数说明:
name 参数表示备份名称location参数用于指定 Collection 备份文件的存放路径collection 参数表示备份恢复后生成的目标 Collection 名称
1.7 分隔Shard
分割一个Shard会将Shard分成两块,每一块为一个子Shard 。
被分割的原始Shard会继续包含原有的索引数据。当一个Shard正在执行Shard分割时,它仍然能够继续接收客户端的查询和索引请求,但是当Shard分割结束之后,后续的查询请求将会被路由到新Shard上。 新Shard会拥有跟旧Shard一样多的Replica。在Shard分割之后,不需要显式地执行commit(无论硬提交还是软提交)操作内部会隐式地执行一个软提交,这样保证了索引文档能够在新分割的子Shard上可见。分割Shar只适合使用numShards参数创建的Collection,即默认显示路由(compositeId)方式创建
接口地址:
http://localhost:8983/solr/admin/collections?action=SPLITSHARD&collection=anotherCollection&shard=shard1
参数说明:
collection:即将被分割的collection名称
shard:该Collection下的分片名称ranges:以十六进制表示的 Hash 范围区间,多个采用逗号分隔,比如 ranges=0-1 f4, I f5-3e8,3e9-5dcsplit.key:用于分割索引的keypropertyName=value: 用于定义core的properties,可选参数async:用于指定一个异步请求ID,当你指定了此参数即表示启用异步执行,建议启用,设置示例async=60000,60000 即你的异步请求 ID ,之后你可以根据这个异步请求 ID 获取 Shard 分割的执行结果,可选参数
1.8 创建Shard
创建一个新Shard只适用于使用隐式路由(implicit)的Collection,对于使用隐式路由的Collection而言,创建一个新Shard也只有通过此API进行创建。 如果你的Collection使用的是compositeld路由,那么你只能使用SPLITSHARD操作Shard进行分割来生成新Shard。
接口地址:
/admin/collections?action=CREATESHARD&shard=shardName&collection=name参数说明:
collection 表示集合名称,必须参数
shard 表示要创建的分片名称, 必须参数createNodeSet 允许定义节点扩展新的集合。如果未提供,则创建操作将创建分片副本遍布所有活SOLR节点。格式是逗号分隔的列表,如:localhost:8983_solr,localhost:8984_solr,localhost:8985_solr 。非必须参数
1.9 删除Shard
删除一个Shard会卸载该Shard下的所有Replica,同时会将其从Zookeeper上的clusterstate.json中移除,默认还会删除该Shard下的每个Replica的instanceDir和dataDir目录 。
接口地址:/admin/collections?action=DELETESHARD&shard=shardID&collection=name
参数说明:collection 用于指定想要删除的 Shard 属于哪个 Collection
shard 用于指定想要删除的 S hard 的名称deletelnstanceDir 是否同时删除每个 Replica 的 Core 目录,默认值 true ,可选参数deleteDataDir 是否同时删除每个 Replica 的数据目录,默认值 true ,可选参数deletelndex 是否同时删除每个 Replica 下的索引数据,默认值 true ,可选参数
2.0 创建一个 Replica
指定的 Collection 的某个 Shard 下添加一个 Replica(副本)
接口地址:
http://localhost:8983/solr/admin/collections?action=ADDREPLICA&collection=test2&shard=shard2&node
=192.167.1.2:8983_solr参数说明:collection 用于指定想要在哪个 collection 下创建一个 Rephca
shard 用于指定想要在哪个shard下创建一个Replica,如果此参数未指定,那么_route_参数必须指定_route_ 如果指定了 shard 参数,那么此参数会自动被忽略 。 此参数用于指定一个 Shard key 来确定此 Replica 属于哪个 Shardnode 用于指定在哪个 Solr 节点上创建该 Replica 。 节点名称指定示例: 192.168.1.35:8983_solr ,可以查看zk中的live_nodes节点下查看。 可选参数instanceDir 用于指定创建 Replica 时是否同时创建该 Replica 的 Core 目 录,可选参数dataDir 用于指定创建 Replica 时是否同时创建该 Replica 的数据目录,可选参数property.name=value 用于指定创建 Replica 时设置该 Replica 的 core.properti邸,可选参数
当你为某个 Collection 下的指定 Shard 创建一个 Replica 时,可能会提示如下异常:
org.apache.solr.common.SolrException:org.apache.solr.common.SolrException:Cannot create 1 new replicas for collection goods given the current number of live nodes and a maxShardsPerNode of 6从提示信息中,我们可以得知,当前 maxShardsPerNode=6 即每个 Solr 节点上最多有6个Shard , maxShardsPerNode参数表示每个 Solr 节点上最多可以分布的 Shard 个数,默认值是1,你可以在创建Collection时设置此参数。 也可以通过修改Collection接口更新此参数值。
在一个正常的 SolrCloud 集群中,不允许在同一个活跃的 Solr 节点上出现属于同一个 shard 的多个Replica。 将一个 Replica 添加到一个 Solr 节点上应满足以下条件: numShards*replicationFactor <liveSolrNode*maxShardsPerNode numShards 表示 Collection 的 Shard 个数, replicationFactor表示每个 Shard 下的 Replica 个数, liveSolrNode 表示集群中的活跃节点 。
2.1 删除Replica
此接口用于删除指定的 Replica。 如果该Replica的Core正在运行,那么Core会被卸载,然后Replica会从集群状态中被移除,默认还会删除该 Replica 的 Core 的 instanceDir和 dataDir。
如果该 Replica 的 Core 或者该 Replica 的所在 Solr 节点挂掉了 , 那么该 Replica会从集群状态中删除。如果该 Core 后续又自动恢复了,那么它会自动被卸载接口地址:
http://localhost:8983/solr/admin/collections?action=DELETEREPLICA&collection=test2&shard=shard2&replica=core_node3
参数说明:
collection 待删除的 Replica 所属 Collection 的名称
shard 待删除的 Replica 所属 Shard 的名称replica 待删除的 Replica 的名称deletelnstanceDir 删除 Replica 同时是否删除 Replica 的 core 目 录 ,可选参数deleteDataDir 删除 Replica 同时是否删除 Replica 的数据目录,可选参数deletelndex 删除 Replica 同时是否删除 Replica 的索引数据,可选参数onlylfDown 如果此参数设置为 true ,那么如果 Replica 的状态为 ACTIVE ,那么将什么都不做。 可选参数async 用于指定一个异步请求 ID , 当你指定了此参数即表示启用异步执行,可选参数