(1)ES内存设置
因为ES是非常消耗内存的,所以规划的第一步就是考虑index的JVM内存的问题。ES中 1TB的数据大概占据2GB的内存,一般情况我们都会按照这个来进行规划。如果要更加精确的计算的话,需要我们自己去ES中查看查看内存大小。
假设JVM内存配置31G, ES的内存最好不要超过32G,JVM的新生代你可以配置10G,老年区可以配置21G,index的内存最好不要超过10G,换算成索引的数据量就是5TB。如果有100T的数据,那么每个索引最好不要超过5T的话,就需要20个节点。
冻结索引实现更高的存储率
在给定节点上的索引数量越大,用于支持数据处于开放可搜索状态所需的内存就越多。在某些情况下,例如出于监管原因需要长期存档多年数据,并保持数据处于开放可搜索状态,这实际上就浪费了一些资源。
冻结索引功能用于弥补该问题,当索引被冻结时,它不占用堆,允许单个节点以非常低的开销轻松管理数千个索引。与关闭索引不同,冻结索引可复制,当搜索冻结索引时,查询将完全开放、搜索,然后按顺序关闭每个索引。冻结索引带来更高的磁盘存储与堆的占率,但是时间换空间,代价是搜索延迟。
(2)单节点分片数量
官方建议:节点分片最好按照JVM内存来进行计算
每Gb内存可以为20个分片,假设我们的JVM总量为30G,那么分片数据量最大600个。
如果分片数量就是非常多,那么整个集群分片数量最好不要超过10万
(3)主节点设置
ES集群中的建议使用独立的主节点
建议:使用独立的主节点,不要把数据节点和主节卓放在一起,如果主节点宕掉,那么在这个节点的数据就不能再最短时间内提供服务。影响客户端的查询
建议:使用独立的协调节点,如果客户的请求,我们用单独的协调节点来处理。