SolrCloud 6.6.2 之 Collection API

一、Collection經常使用操做 api

1.1建立

http://192.168.1.35:9999/solr/admin/collections?action=CREATE&name=searchTest&numShards=4&replicationFactor=1&collection.configName=searchnode

參數說明:apache

name:collection的名稱
numShards:指定分片數量(slices)
replicationFactor:指定每一個Shard副本數量
maxShardsPerNode:每一個Solr服務器節點上最大Shard數量,默認值爲1json

注意三個數值:numShards、replicationFactor、liveSolrNode,一個正常的solrCloud集羣不允許同一個liveSolrNode上部署同一個shard的多個replic,所以當maxShardsPerNode=1時,numShards*replicationFactor>liveSolrNode時,報錯api

所以正確時因知足如下條件:numShards*replicationFactor<liveSolrNode*maxShardsPerNode服務器

collection.configName:指定該collection使用那份config,這份config必須存在於zk中。異步

createNodeSet:暫時不進行任何的 Shard 和 Replica 建立時,你須要添加額外的createNodeSet=EMPTY 參數
autoAddReplicas:賦值爲true 即開啓自動建立Replicaasync

1.2修改

/admin/collections?action=MODIFYCOLLECTION&collectio=<collection-name>&<attributename>=<attribute-value>spa

參數說明:索引

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 , 當你指定了此參數即表示啓用異步執行,可選參數

相關文章
相關標籤/搜索