不为失败找理由,要为成功找方法。

ES索引设计问题

Elasticsearch | 作者 zj_likang | 发布于2019年11月09日 | 阅读数:2467

因为网上有建议新手学习开源开发,从比较高的版本开始 ,刚开始学习使用 es  7.3.2,在搭建一套 EL+自己的查询 系统,用来采集,查看,公司客户的云上应用日志
现有一个问题,本想按 一个应用一个index,type 则对应 应用的不同文件 err.log info.log 等,如果客户应用数量达到了上万个,甚至十万个,这个。。。。我看有人说 3000个index,就已经很慢了;
index的数量到底会不影响查询速度?
 
 如果 10万个index   里面包含 100亿级别数据  和 多个index 一起包含 100亿数据,他们之间的查询性能应该不一样吧,查询可以指定 index,范围会小很多,理论上速度会更快不是?
index 的数量 和 里面包含的数据量怎么样来平衡呢?
 
 
 
已邀请:

rojay - 杭州的一枚90后初入职场的IT男

赞同来自:

这个具体平衡还是得按照你的实际应用场景来定制的。还是需要你自己有实际进行测试的。
一般数据量规模比价大的时候,目前总体的思路是分索引,就是按照时间区间进行分割。后续查询的时候,首先根据查询条件里面的时间区间去确定要去查找的对应索引,这样第一步就缩小查询范围,增加查询性能。

zlzlsx

赞同来自:

你应该考虑的是总的分片数量,在考虑索引数量吧,确保每个节点的分片数量保持在低于每1GB堆内存对应集群的分片在20-25之间。每个分片数据量是20-40GB
匿名用户

匿名用户

赞同来自:

一定要记住这句话, 生产环境,ES集群是有极限的。
 
一个集群是有最大节点限制,最大内存限制,最大磁盘空间限制的。一个集群最大索引数,最大分片数都是有限制的。
 
一个集群,最大节点最好不要超过20个,(分不同的场景)。一个节点的内存最好是64GB,或者128GB,硬盘最好是10TB或者20TB,
cpu 至少20核心,最好40核心。
 
你这种场景,不应该只用一个集群, 接入一种业务,一个集群比较好(按照你的描述,业务就是你接入的应用)。
 
这样的最有扩展的,最大隔离不用的业务,相互之间无影响,一个集群挂掉,不影响其他集群业务。
 
千万不要所有业务只用一个集群,所有索引放在一个集群。
 

要回复问题请先登录注册