目錄
1.elasticsearch健康狀態
2. 如何解決健康狀態為黃色?
3. 如何解決健康狀態為紅色?
elasticsearch 集群健康狀態分為三種:
green:最健康得狀態,說明所有的分片包括備份都可用; 這種情況elasticsearch集群所有的主分片和副本分片都已分配, elasticsearch集群是 100% 可用的。
yellowred:部分的分片可用,表明分片有一部分損壞。此時執行查詢部分資料仍然可以查到,遇到這種情況,還是趕快解決比較好; 這種情況elasticsearch集群至少乙個主分片(以及它的全部副本)都在缺失中。這意味著你在缺少資料:搜尋只能返回部分資料,而分配到這個分片上的寫入請求會返回乙個異常。
elasticsearch 集群不健康時的排查思路:
1) 首先確保 es 主節點最先啟動,隨後啟動資料節點;
2) 允許 selinux(非必要),關閉 iptables;
3) 確保資料節點的elasticsearch配置檔案正確;
4) 系統最大開啟檔案描述符數是否夠用;
5) elasticsearch設定的記憶體是否夠用 ("es_heap_size"記憶體設定 和 "indices.fielddata.cache.size"上限設定);
6) elasticsearch的索參數量暴增 , 刪除一部分索引(尤其是不需要的索引);
注意:如下是單機單節點部署elasticsearch, 集群狀態可能為yellow, 因為單點部署elasticsearch, 預設的分片副本數目配置為1,而相同的分片不能在乙個節點上,所以就存在副本分片指定不明確的問題,所以顯示為yellow。
可以通過在elasticsearch集群上新增乙個節點來解決問題,如果不想這麼做,可以刪除那些指定不明確的副本分片(當然這不是乙個好辦法)刪除操作如下。
刪除副本分片的辦法:curl -xput "http://localhost:9200/_settings" -d' '
節點數和備份數遵循原則:
節點數和備份數應遵循: n >= r + 1, n為節點數,r為number_of_replicas設定的值
問題描述:單機版elasticsearch,版本6.7.0,使用head檢視發現集群健康值顯示黃色?
黃色表示基本的分片可用,但是備份不可用(或者是沒有備份),檢視es,發現主節點某個分片出現問題,變成unassigned,例如下圖dfy_index在node-1中的分片2會顯示在unassigned那一排,集群狀態為紅色或者黃色
unssigned表示未分配副本分片的問題,在執行settings中刪除副本分片的命令後, 這個問題就解決了。
原因:索引的「number_of_replicas (備份數)」為1,而節點只有1個,所以備份出來的資料沒有節點可分配。
解決辦法:增加節點或者刪除副本把number_of_replicas設定為0,這裡因為是單機,選擇刪除副本。
方法1:刪除副本統一設定
方法2: 修改elasticsearch.yml配置檔案
檔案末增加(冒號之後有空格)
index.number_of_replicas: 0
如果設定單個索引設定
curl -xput 'localhost:9200//_settings' -d ''
現在使用head外掛程式檢視es,集群健康值顯示為綠色:
集群健康值顯示為red,則說明至少乙個主分片分配失敗, 這將導致一些資料以及索引的某些部分不再可用。遇到這種情況,還是趕快解決比較好。
原因:集群中部分節點的主分片未分配。r通常時由於某個索引的住分片為分片unassigned,只要找出這個索引的分片,手工分配即可。
如何解決 unassigned 分片問題?
方法一:刪除索引——如果這個分片資料已經不可用,直接刪除該分片 (即刪除索引)
elasticsearch中沒有直接刪除分片的介面,除非整個節點資料已不再使用,刪除節點。
刪除索引命令:
curl -xdelete 索引名
方法二:是否違背節點備份原則 n >= r + 1
公式:集群中節點數量 >= 集群中所有索引的最大副本數量 +1
1) 新增節點處理,即n增大;
2) 刪除副本分片,即r置為0;
curl -xput 'localhost:9200//_settings' -d ''
方法三:allocate重新分配分片
如果方案二仍然未解決,可以考慮重新分配分片。可能的原因:
1) 節點在重新啟動時可能遇到問題。正常情況下,當乙個節點恢復與群集的連線時,它會將有關其分片的資訊**給主節點,然後主節點將這分片從「未分配」轉換為 "已分配/已啟動"。
2) 當由於某種原因 (例如節點的儲存已被損壞) 導致該程序失敗時,分片可能保持未分配狀態。
在這種情況下,必須決定如何繼續: 嘗試讓原始節點恢復並重新加入集群(並且不要強制分配主分片); 或者強制使用reroute api分配分片並重新索引缺少的資料原始資料源或備份。 如果你決定分配未分配的主分片,請確保將"allow_primary":"true"標誌新增到請求中。
curl -xpost ':9200/_cluster/reroute' -d '}]
}'
現在使用head外掛程式檢視es,集群健康值顯示為綠色(如果還不是,請考慮其它原因)。 ElasticSearch 更新後延遲解決方法
在index後有乙個refresh interval預設1秒,在這個時間間隔內search是不可見的。解決辦法有兩種 1,通過ui層解決。比如更新成功後,彈出提示框 2,設定重新整理策略,有以下三種 es版本5.4.3 public static enum refreshpolicy impleme...
無法連線Elasticsearch解決方案
最近還是在弄elk,並且在測試logstash從kafka消費日誌 最後輸出到elasticsearch 測試完畢後,在kibana中,並沒有發現elasticsearch中的資料。後來裝了elasticsearch head外掛程式,想看看我es裡面到底有啥資料,發現在head外掛程式中,顯示cl...
elasticsearch 資料遷移解決方案
儘管可以增加新的型別到索引中,或者增加新的字段到型別中,但是不能新增新的分析器或者對現有的字段做改動。如果你那麼做的話,結果就是那些已經被索引的資料就不正確,搜尋也不能正常工作。對現有資料的這類改變最簡單的辦法就是重新索引 用新的設定建立新的索引並把文件從舊的索引複製到新的索引。字段 source的...