扩容设计
date
Aug 3, 2021
slug
elasticsearch-guide-expansion
status
Published
tags
Elasticsearch
读书
summary
type
Page
扩容最小的单元是分片
在只有一个节点和一个分片的集群中,再增加一个节点,什么都不会发生,因为没有什么能够迁移改变了:

当集群中有两个分片时,增加一个节点会发生分片迁移:

并不是分片越多越好
分片是有代价的:
- 一个分片的底层即为一个 Lucene 索引,会消耗一定文件句柄、内存、以及 CPU 运转。
- 每一个搜索请求都需要命中索引中的每一个分片,如果每一个分片都处于不同的节点还好, 但如果多个分片都需要在同一个节点上竞争使用相同的资源就有些糟糕了。
- 用于计算相关度的词项统计信息是基于分片的。如果有许多分片,每一个都只有很少的数据会导致很低的相关度。
基于时间的数据
日志数据可以按天做索引,按年按月或按天建索引,再结合别名,做聚合:
索引模板
相当于一套前提规则,在自动创建符合规则的索引时,会按照模板的有要求去创建,如 logstash 每天自动常见的索引叫 logstash-20xx.xx.xx,当索引不存在时会自动创建,就是按照如下的规则去创建:
对于无效数据处理
- 直接删除
- 迁移旧索引,集群节点有性能区别,可将旧索引分配至性能一般的节点上
- 使用 optimize API 合并段 segment
- 关闭旧索引:
- 旧索引归档