文档章节

SolrCloud 6.6.2 之 Collection API

 刘祖鹏
发布于 06/28 16:19
字数 2241
阅读 47
收藏 0

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-5dc
split.key:用于分割索引的key
propertyName=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 属于哪个 Shard
node  用于指定在哪个 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 , 当你指定了此参数即表示启用异步执行,可选参数

© 著作权归作者所有

共有 人打赏支持
粉丝 8
博文 48
码字总数 72136
作品 0
通州
高级程序员
私信 提问
SolrCloud5.0路由 Collection建与数据迁移

SolrCloud的设计是为了提供高可用、容错,在分布式环境中进行内容索引和查询请求。 SolrCloud 5.0,对自带的SolrCloud的启动脚本进行了改进,启动SolrCloud变的异常简单,执行 view sourcep...

zcl111
2016/07/14
13
0
SolrCloud集群Collection进行手动二次Sharding--solr分片相关

SolrCloud集群Collection进行手动二次Sharding http://blog.csdn.net/shirdrn/article/details/9770829 一致性hash和solr千万级数据分布式搜索引擎中的应用 http://www.lanceyan.com/tech/a......

毛朱
2015/08/30
1K
0
SolrCloud Wiki翻译(3)Shards & Indexing Data

When your data is too large for one node, you can break it up and store it in sections by creating one or more shards. Each is a portion of the logical index, or core, and it's ......

曾杰
2014/02/12
0
1
SolrCloud4.9+zookeeper在CentOS上的搭建与安装

Apache SolrCloud安装 SolrCloud通过ZooKeeper集群来进行协调,使一个索引进行分片,各个分片可以分布在不同的物理节点上,多个物理分片组成一个完成的索引Collection。SolrCloud自动支持Sol...

翊骷
2014/09/17
0
0
SolrCloud Wiki翻译(4)Distributed Requests

One of the advantages of using SolrCloud is the ability to distribute requests among various shards that may or may not contain the data that you're looking for. You have the op......

曾杰
2014/02/12
0
4

没有更多内容

加载失败,请刷新页面

加载更多

Java 11 已发布,String 还能这样玩!

在文章《Java 11 正式发布,这 8 个逆天新特性教你写出更牛逼的代码》中,我有介绍到 Java 11 的八个新特性,其中关于 String 加强部分,我觉得有点意思,这里单独再拉出来讲。 Java 11 增加...

Java技术栈
20分钟前
1
0
什么是以太坊DAO?(二)

Decentralized Autonomous Organization,简称DAO,以太坊中重要的概念。一般翻译为去中心化的自治组织。 在上一节中,我们为了展示什么是DAO创建了一个合约,就像一个采用邀请制的俱乐部,会...

geek12345
36分钟前
4
0
全屋WiFi彻底无死角 这才是终极解决方案

无线网络现在不仅在家庭中不可或缺,在酒店、医院、学校等场景中的需求也越来越多。尤其是这些场景中,房间多但也需要每个房间都能够完美覆盖WiFi,传统的吸顶式AP就无法很好的解决问题。 H3...

linux-tao
49分钟前
4
0
Python日期字符串比较

需要用python的脚本来快速检测一个文件内的二个时间日期字符串的大小,其实实现很简单,首先一些基础的日期格式化知识如下 复制代码 %a星期的简写。如 星期三为Web %A星期的全写。如 星期三为...

dragon_tech
50分钟前
3
0
ORA 各种oraclesql错误

ORA-00001: 违反唯一约束条件 (.) ORA-00017: 请求会话以设置跟踪事件 ORA-00018: 超出最大会话数 ORA-00019: 超出最大会话许可数 ORA-00020: 超出最大进程数 () ORA-00021: 会话附属于其它某...

青峰Jun19er
54分钟前
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部