1.將索引的分片數拆分成多個。
_split API要求必須使用特定的number_of_routing_shards創建源索引,以便將來進行分割。在Elasticsearch 7.0中已經刪除了這一要求。
索引可以拆分多次,但拆分的最大分片數是由創建索引是的number_of_routing_shards決定的。拆分后的分片數量需是number_of_routing_shards的因子,即number_of_routing_shards是拆分后分片數的倍數。
例如,原有主分片為5,number_of_routing_shards=30的索引,可以按如下幾種情況拆分:
5→10→30(split by 2, then by 3)5→15→30(split by 3, then by 2)5→30(split by 6)
2.例子:
創建用於拆分的索引
PUT my_source_index { "settings": { "index.number_of_shards" : 1, "index.number_of_routing_shards" : 6 } }
設置為只讀
PUT /my_source_index/_settings { "settings": { "index.blocks.write": true } }
拆分索引分片
POST my_source_index/_split/my_target_index { "settings": { "index.number_of_shards": 3 } }
3.拆分必須滿足的條件:
- 目標索引必須不存在
- 索引的主碎片必須少於目標索引。
- 目標索引中的主碎片數量必須是源索引中的主碎片數量的一個因子。
- 處理拆分進程的節點必須有足夠的空閑磁盤空間來容納現有索引的第二個副本。
4._split同樣支持settings和aliases參數
POST my_source_index/_split/my_target_index { "settings": { "index.number_of_shards": 5 }, "aliases": { "my_search_indices": {} } }
5.監控
參考 https://www.cnblogs.com/libin2015/p/10654972.html
參考資料:
https://www.elastic.co/guide/en/elasticsearch/reference/6.2/indices-split-index.html
