磁盘空间大小的因素包括
- 副本数量:建议至少1个副本。
- 索引开销:通常比源数据大10%(_all参数等未计算)
- 操作系统预留:默认操作系统会保留5%的文件系统供您处理关键流程、系统恢复以及磁盘碎片等
- ES内部开销:段合并、日志等内部操作,预留20%
- 安全阈值:通常至少预留15%的安全阈值
根据以上因素得到:**最小磁盘总大小 = 源数据大小 * 3.4 **
计算方式如下:磁盘总大小 = 源数据 (1 + 副本数量) 索引开销 /(1 - Linux预留空间)/(1 - ES开销)/(1 - 安全阈值)= 源数据 (1 + 副本数量) 1.7 = 源数据 * 3.4
分片(Shard)个数评估
- 在分配shard前,对ES进行数据测试。当数据量很大时,要减少写入量的大小,降低ES压力,建议选择多主1个副本;当数据量较小,且写入量也比较小时,建议使用单主多副本或者单主一副本。
- 一个shard的存储量保持在30GB以内(最优),特殊情况下,可以提升到50GB以内。如果评估结果超过该容量,建议在创建索引之前,合理进行shard分配,后期进行reindex,虽然能保证不停机,但是比较耗时
- shard的个数(包括副本)要尽可能等于数据节点数,或者是数据节点数的整数倍
- 单个节点上同一索引的shard个数不要超5个
- 单个数据节点(服务器)的shard数量 = 当前节点的内存数 * 30(小规格实例参考)