ElasticSearch 常用的优化手段总结

1.常见优化

设计阶段调优

(1)根据业务增量需求,采取基于日期模板创建索引通过 roll over API 滚动索引
(2)使用别名进行索引管理;
(3)每天凌晨定时对索引做 force_merge 操作,以释放空间;
(4)采取冷热分离机制,热数据存储到 SSD,提高检索效率;冷数据定期进行 shrink操作,以缩
减存储;
(5)采取 curator 进行索引的生命周期管理;
(6)仅针对需要分词的字段,合理的设置分词器
(7)Mapping 阶段充分结合各个字段的属性,是否需要检索、是否需要存储等。……..

写入调优

(1)写入前副本数设置为 0;
(2)写入前关闭 refresh_interval 设置为-1,禁用刷新机制;
(3)写入过程中:采取 bulk 批量写入;
(4)写入后恢复副本数和刷新间隔;
(5)尽量使用自动生成的 id。

查询调优

(1)禁用 wildcard;
(2)禁用批量 terms(成百上千的场景);

(3)充分利用倒排索引机制,能 keyword 类型尽量 keyword;
(4)数据量大时候,可以先基于时间敲定索引再检索;
(5)设置合理的路由机制。

其他调优

部署调优,业务调优等。

2.数据量太大时的存储优化

动态索引层面

基于模板+时间+rollover api 滚动创建索引,举例:设计阶段定义:blog 索引的模板格式为:
blog_index_时间戳的形式,每天递增数据。这样做的好处:不至于数据量激增导致单个索引数据量非常大,接近于上线 2 的32 次幂-1,索引存储达到了 TB+甚至更大。一旦单个索引很大,存储等各种风险也随之而来,所以要提前考虑+及早避免。

存储层面

冷热数据分离存储,热数据(比如最近 3 天或者一周的数据),其余为冷数据。对于冷数据不会再写入新数据,可以考虑定期 force_merge 加 shrink 压缩操作,节省存储空间和检索效率。

部署层面

一旦之前没有规划,这里就属于应急策略。

结合 ES 自身的支持动态扩展的特点,动态新增机器的方式可以缓解集群压力,注意:如果之前主
节点等规划合理,不需要重启集群也能完成动态新增的。

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Elasticsearch 中,每个索引都被分为多个段(segment),每个段包含一部分文档的索引信息。优化段配置是指通过配置参数来控制 Elasticsearch 在何时和如何合并这些段,以提高索引性能和减少磁盘空间的使用。 下面是一些常用优化段配置参数: - index.merge.policy.segments_per_tier:该参数控制每个段合并到下一层的段数。默认值为10,表示每当有10个段需要合并时,它们会被合并成一个新的段。可以适当调整该参数来控制段的合并频率。 - index.merge.policy.max_merged_segment:该参数控制合并后段的最大大小。默认值为2GB。可以适当调整该参数来控制段的大小。 - index.merge.scheduler.max_thread_count:该参数控制段合并的最大线程数。默认值为1,表示只有一个线程用于段合并。可以增加该参数来提高段合并的速度。 - index.refresh_interval:该参数控制索引的刷新间隔,即多长时间将内存缓冲区中的文档写入磁盘。较小的刷新间隔可以提高实时性,但也会增加磁盘的使用。默认值为1秒。可以适当调整该参数来平衡实时性和磁盘使用。 - index.translog.flush_threshold_ops:该参数控制在写入多少个操作后刷新事务日志。默认值为5000。可以适当调整该参数来控制事务日志的大小。 总之,优化段配置是 Elasticsearch 的一个重要调优手段,可以通过适当配置参数来提高索引性能和减少磁盘空间的使用。但是需要注意的是,不同的应用场景可能需要不同的优化策略,需要根据具体情况进行调整。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值