要不要再翻翻文档呢?

一台物理机分片数最多能有几个?

Elasticsearch | 作者 srdqc | 发布于2018年03月09日 | 阅读数:3338

每个分片都是一个Lucene实例,它会消耗相应的CPU,IO,内存,文件描述符等等,我想问一下一台机器上最多能 有多少为好
已邀请:

laoyang360 - 《一本书讲透Elasticsearch》作者,Elastic认证工程师 [死磕Elasitcsearch]知识星球地址:http://t.cn/RmwM3N9;微信公众号:铭毅天下; 博客:https://elastic.blog.csdn.net

赞同来自: srdqc rojay

从wood大神那拷贝的:一个集群可以容纳的索引的数量(准确的说是shard数据量)和shard的大小以及数据结点的数量和硬件配置有关,因此不可能有一个统一的标准。 最好通过监控数据来做容量管理,如果一个数据结点的heap压力很大,load过高导致查询或者写入慢,就应该考虑扩容加节点了。理论上集群可以容纳的索引数据量可以通过增加数据结点来无限水平扩展,但实际集群的元信息是无法水平扩展的,因为ES在设计上是在每个节点缓存了集群元信息的全量拷贝。当集群规模较大的时候(节点比较多,shard比较多,字段比较多)的情况下,更新元信息的开销也随之增大。直观上的感受就是创建/删除索引,或者update setting/mapping一类的操作比较慢,一次操作耗时可能达到数秒。
因此建议尽量控制索引和shard的数量,比如如果一天的数据量很小,不一定非要一天一个索引,可以考虑1周或者1个月一个索引,甚至一天数据很少的时候,一个shard也许就够了,而不是用5个或者10个shard。
ES 5.0以后的shrink和rollover api也可以用来对历史冷数据做shard的缩减,对于查询频率比较低的历史数据,缩减shard数量能节省大量的集群资源。

万一所有手段都用了,shard数量依然很多,则可以考虑搭建多个集群,采用tribe node互联,或者在应用层面制定一定的路由规则,将数据分散到多个集群

要回复问题请先登录注册