ElasticSearch性能优化

本文介绍了ElasticSearch性能优化的八大策略,包括防止脑裂、设置memory_lock、合理分配分片与副本数量、构建全量数据时关闭副本与刷新、去除_all字段、translog优化及节点角色分离等,帮助提高检索效率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

ElasticSearch性能优化

1) 防止脑裂

discovery.zen.minimum_master_modes: 50% 节点最小数

2) 设置memory_lock

来锁定进程的物理内存地址 bootstrap.memory_lock: true 允许 JVM 锁住内存,禁止操作系统交换出去

3) 设置分片数

如果分片数过少或过多,都会导致检索比较慢。

  分片数过多会导致检索时打开比较多的文件,另外也会导致多台服务器之间通讯。

  而分片数过少会导至单个分片索引过大,所以检索速度也会慢。

  建议单个分片最多存储20G左右的索引数据,分片个数建议5-20个比较合适

 

4) 设置副本数

副本多的话,可以提升搜索的能力,但是如果设置很多副本的话也会对服务器造成额外的压力,因为需要主分片需要给所有副本同步数据。所以建议最多设置1-2个即可

 

5) 构建全量数据

如果在项目开始的时候需要批量入库大量数据的话,建议将副本数设置为0,不需要实时refresh

"number_of_replicas": 0 可以先关闭replicas建立副本

"refresh_interval": "-1" 不需要实时refresh

 

6) 去掉mapping中_all字段

Index中默认会有_all这个字段,默认会把所有字段的内容都拷贝到这一个字段里面,这样会给查询带来方便,但是会增加索引时间和索引尺寸。

 

7) translog 优化:

     "translog": {

                "sync_interval": "60s",     --sync间隔调高

                "durability": "async",        – 异步更新

                "flush_threshold_size":"1g"  --log文件大小

             }

 

8) 使用node master, client data

master,client不存储任何索引数据。协调各种创建索引请求或者查询请求

data节点不用开启http服务。将其中的配置 参数这样设置:http.enabled: false,同时也不要安装head, bigdesk, marvel等监控 插件,这样保证data节点服务器只需处理创建/更新/删除/查询索引数据等操作。

 

 

Elasticsearch 是一个高性能的分布式搜索引擎,但是在处理大量数据时,可能会出现性能瓶颈。以下是一些 Elasticsearch 性能优化的建议: 1. 确保 Elasticsearch 集群的硬件资源充足。例如,CPU、内存、磁盘空间等。可以使用 Elasticsearch 的监控工具来监测集群资源的使用情况,以便及时进行扩容。 2. 对于大型数据集,使用分片可以提高 Elasticsearch 的性能。可以考虑增加分片数量,以提高搜索和写入的速度。 3. 使用合适的索引设置,例如合理的分词器和分析器,可以提高搜索效率。 4. 避免使用过多的查询,因为每个查询都会占用系统资源。可以使用缓存技术来优化查询性能。 5. 合理设置 Elasticsearch 的 JVM 堆内存大小,以确保 Elasticsearch 有足够的内存来处理数据。 6. 使用 Elasticsearch 的缓存机制,例如字段数据缓存、过滤器缓存等,可以显著提高搜索性能。 7. 对于写入频繁的场景,可以考虑使用异步写入方式,避免写入操作对搜索性能产生影响。 8. 对于长时间运行的查询,可以考虑使用 Elasticsearch 的 scroll API,以避免在内存中保留大量数据。 9. 定期清理 Elasticsearch 中的过期数据,以减少硬盘空间占用和搜索性能受到的影响。 10. 使用 Elasticsearch 的监控工具来监控集群性能,并及时处理异常情况,以保证 Elasticsearch 的高可用性和高性能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值