Es修改分詞相關操作

最近修改了ElasticSearch分詞。並reindex索引。

使用的分詞插件是Hanlp

修改完分詞之後將對應的bin文件上傳到服務,並替換對應的bin文件

服務器Es對應的路徑elasticsearch/plugins/analysis-hanlp/data/dictionary/

替換完成之後(我使用的Es是3個節點,都要替換),就要重啓節點了。

重啓節點的安全流程:

1: 關閉集羣分片的自動分配

PUT _cluster/settings

{"persistent":{"cluster":{"routing":{"allocation.enable":"none"}}}}.

2: 確認關閉後,重啓節點

3: 節點重啓成功後,打開集羣分片的自動分配

PUT _cluster/settings

{"persistent":{"cluster":{"routing":{"allocation.enable":"all"}}}}.

注意: 在重啓Es節點的時候一定要使用安全的流程,博主就是沒有關閉Es分片自動分配就重啓節點,正好趕上Es寫入數據,造成了生產索引長時間的分片Unsigned,索引status一直是黃色的。。就像這樣

記錄一下查看索引狀態的相關命令吧

查看分片狀態GET IP:9200/_cat/shards?v  可以看到紅框對應的分片就是沒有被分配的

查看集羣健康GET IP:9200_cat/health?v    注意:正常情況下active_shards_percent 這個字段應該是100.0%

查看Unsigned的日誌(這個有助於我們解決問題,沒有分片Unsigned就不需要使用)GET IP:9200/_cluster/allocation/explain

索引狀態爲Yellow持續了兩天,lz受不了了因爲還要reindex,切換別名。

博主發現沒有被分配的分片都在節點node-2上面,於是重啓了node-2的節點,結果不是很理想。

最後博主使用命令 POST _cluster/reroute?retry_failed=true 

使用這個命令後可以看到分片一點點的在被分配

 


Reindex之前要先創建索引,可以先創建一個副本數量爲0的索引,這樣可以提高Reindex的效率,在Reindex之後可以再把副本數量改爲需要的數量。

PUT index/_settings
{
  "number_of_replicas":"2"
}

在Reindex好了之後,可以根據需要進行Merge啦,這樣操作可以提高查詢索引的速度。

GET index/_segments可以看到segments的數量

Merge之前是

使用此命令可以將對應索引執行merge  IP:9200/index/_forcemerge?max_num_segments=1

請求成功後可以發現,數據佔用空間會一點點變大

可以使用kibana觀察對應索引 Total 和 Primaries 空間大小

在merge之後,他們的大小會恢復到之前,同時查看_segments 可以看到num_search_segments : 1就是成功了。

然後切換別名就好了。 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章