elasticsearch中index的shard規劃原則

數據分佈均勻

  • 對於數據量較小(100GB以下)的index,往往寫入壓力查詢壓力相對較低,一般設置3~5個shard,numberofreplicas設置爲1即可(也就是一主一從,共兩副本) 。

  • 對於數據量較大(100GB以上)的index:

    • 一般把單個shard的數據量控制在(20GB~50GB)

    • 讓index壓力分攤至多個節點:可通過index.routing.allocation.totalshardsper_node參數,強制限定一個節點上該index的shard數量,讓shard儘量分配到不同節點上

    • 綜合考慮整個index的shard數量,如果shard數量(不包括副本)超過50個,就很可能引發拒絕率上升的問題,此時可考慮把該index拆分爲多個獨立的index,分攤數據量,同時配合routing使用,降低每個查詢需要訪問的shard數量。

數據分佈不均勻

        數據分佈不均勻可能會造成某些shard的數據量過大,某些shard的數據量過小,在此種情況下與上面的差別就是需要考慮shrink相關的操作,由於shrink操作新索引的分片數必須是源索引分片數的質數,所以新建index時,索引的個數最好是類似於4,8,12,24之類的數字,否則shrink操作後新索引的分片只能是1,剩下的邏輯按照數據分佈均勻時的原則進行即可

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