参考答案
“设计先行、编码在后”,索引数据的规划,要在前期就做好规划。
这样才能有效的避免突如其来的数据激增,从而导致集群处理能力不足,引发线上客户检索、或影响其他业务。
Elasticsearch 索引数据多了,我们可以从动态索引、存储、部署等方面进行调优。
1 动态索引层面
基于模板 + 时间 + rollover api 滚动创建索引。
例如:
设计阶段定义,blog 索引的模板格式为:blog_index_时间戳的形式,每天递增数据。
这样做的好处:
不至于数据量激增,导致单个索引数据量非常大,接近于上线2的 32次幂 -1 ,索引存储达到了TB+、甚至更大。
一旦单个索引很大,存储等各种风险就会随之而来,l在此要提前考虑、避免。
2 存储层面
冷热数据分离存储,热数据(例如最近3天、或者一周的数据),其余为冷数据。
对于冷数据不会再写入新数据,可以考虑定期 force_merge 加 shrink 压缩操作,节省存储空间和检索效率。
3 部署层面
一旦之前没有规划,这里就属于应急策略。
结合 ES 自身的支持动态扩展的特点,动态新增机器的方式可以缓解集群压力。
需要注意的是:
如果之前主节点等规划合理,不需要重启集群,也能完成动态新增的。
以上,是 Elasticsearch 搜索面试题【Elasticsearch 索引数据多了怎么办,如何调优,部署?】的参考答案。
输出,是最好的学习方法。
欢迎在评论区留下你的问题、笔记或知识点补充~
—end—