Elastic [1000]/[1000] maximum shards open

1、ElasticSearch錯誤提示:

[2020-05-03T11:23:43,758][WARN ][o.e.x.m.e.l.LocalExporter] [node-1] unexpected error while indexing monitoring document
org.elasticsearch.xpack.monitoring.exporter.ExportException: org.elasticsearch.common.ValidationException: Validation Failed: 1: this action would add [1] total shards, but this cluster currently has [1000]/[1000] maximum shards open

https://segmentfault.com/a/1190000021303027

2、問題原因:

根據官方解釋,從Elasticsearch v7.0.0 開始,集羣中的每個節點默認限制 1000 個shard,如果你的es集羣有3個數據節點,那麼最多 3000 shards。這裏我們是開發環境,只有一臺es。所以只有1000。

3、解決方案:

查看設置的最大分片數

GET /_cluster/settings

 

修改

 

PUT /_cluster/settings
{
  "transient": {
    "cluster": {
      "max_shards_per_node":2000
    }
  }
}

 

 

4、優化實踐

如果現在你的場景是分片數不合適了,但是又不知道如何調整,那麼有一個好的解決方法就是按照時間創建索引,然後進行通配查詢。如果每天的數據量很大,則可以按天創建索引,如果是一個月積累起來導致數據量很大,則可以一個月創建一個索引。如果要對現有索引進行重新分片,則需要重建索引。

對於分片數的大小,業界一致認爲分片數的多少與內存掛鉤,認爲 1GB 堆內存對應 20-25 個分片。因此,具有30GB堆的節點最多應有600個分片,但是越低於此限制,您可以使其越好。而一個分片的大小不要超過50G,通常,這將有助於羣集保持良好的運行狀況。

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