Elasticsearch优化的一些建议
1. 增大系统打开文件数
- 调大系统的“最大打开文件数” ,建议32K甚至是64K
ulimit -a(查看)
ulimit -n 32000(设置)
2. 合理设置JVM内存
修改配置文件调整ES的JVM内存大小。
- 修改jvm.options中-Xms和-Xmx的大小,建议设置一样大, 避免频繁的分配内存。 根据服务器内存大小, 一般分配50%左右(默认1g)
3. 锁定物理内存
设置memory_lock来锁定进程的物理内存地址,避免内存交换(swapped) 来提高性能
# 修改文件
vi config/elasticsearch.ymlbootstrap.memory_lock: true
4. 合理设置分片
适当增大分片, 可以提升建立索引的能力, 5-20个比较合适。
如果分片数过少或过多, 都会导致检索比较慢。
- 分片数过多, 会导致检索时打开文件较多, 另外也会导致多台服务器之间通讯, 影响效率。
- 分片数过少会导至单个分片索引过大, 所以检索速度慢。
- 建议单个分片最多存储20G左右的索引数据, 通用计算公式: 分片数量=数据总量/20G
地址:https://www.elastic.co/guide/en/elasticsearch/reference/current/indices-create-index.html
5. 合理设置副本数
- 增加副本, 可以提升搜索的能力。
- 如果副本设置过多, 会对服务器造成额外的压力, 因为主分片需要给所有副本同步数据。 另外, 副本过多也会占用磁盘空间。
- 一般建议最多设置2-3个即可
地址:https://www.elastic.co/guide/en/elasticsearch/reference/current/indices-create-index.html
6. 合并索引
定时对索引进行合并优化, segment越多, 占用的segment memory越多, 查询的性能也越差。
- 索引量不大的情况下, 可以将segment设置为1。
- 在es2.1.0以前调用_optimize接口, 后期改为_forcemerge接口。
curl -u elastic:123456 -XPOST 'http://master:9200/test/_forcemerge?max_num_segments=1'
7. 关闭索引
针对不使用的index, 建议close, 减少内存占用。
只要索引处于open状态, 索引库中的segement就会占用内存, close之后就只会占用磁盘空间不会占用内存。
curl -u elastic:123456 -XPOST 'master:9200/test/_close'
8. 清除删除文档
在Lucene中删除文档, 数据不会马上在硬盘上清除, 而是在lucene索引中产生一个.del的文件, 然而在检索过程中这部分数据也会参与检索, lucene在检索过程会判断是否删除, 如果已经删除, 再过滤掉, 这样也会降低检索效率。
可以执行清除删除文档命令:
curl -u elastic:123456 -XPOST 'http://master:9200/test/_optimize?only_expunge_deletes=true'
9. 合理数据导入
如果在项目开始阶段, 需要批量入库大量数据, 建议将副本数设置为0。 因为es在索引数据的时候, 如果副本已经存在, 数据会立即同步到副本中, 这样会对es增加压力。
等到索引完成后, 再恢复副本数即可, 可以提高索引效率。
curl -XGET http://master:9200/test/_settings?pretty
curl -H "Content-Type:application/json" -XPUT 'http://master:9200/test/_settings' -d \
'{"index":{"number_of_replicas":0}
}'
curl -H "Content-Type:application/json" -XPUT 'http://master:9200/test/_settings' -d \
'{"index":{"number_of_replicas":1}}'
10. 设置索引_all
去掉mapping中_all域, Index中默认会有_all的域, 虽然会给查询带来方便, 但是会增加索引时间和索引尺寸。
地址:https://www.elastic.co/guide/en/elasticsearch/reference/current/mapping-all-field.html
11. 设置索引_source
_source字段我在们进行检索时相当重要。
ES默认检索只会返回ID, 如果在{“enabled”:false}情况下,你需通过根据这个ID去去倒排索引中去取每个Field数据,效率不高。 而反之, 在{“enabled”:true}的情况下可以根据ID直接检索对应source JSON的字段, 不用去倒排索引去按Field取数据。
地址:
https://www.elastic.co/guide/en/elasticsearch/reference/current/mapping-source-field.html
12. 版本
使用 Java 代码操作 es 集群,要保证本地 es 的版本和集群上 es 的版本保持一致。
保证集群中每个节点的 JDK 版本和 es 配置一致
Elasticsearch优化的一些建议相关推荐
- 【es】使用ElasticSearch的44条建议 性能优化
1.概述 转载:使用ElasticSearch的44条建议 建议去看原文,这里是防丢失 在搜索业务上摸爬滚打3年,使用的Es版本也从1.x升级到了5.x,扮演的角色也逐渐从Es的使用方变为维护方,这里 ...
- Elasticsearch 优化分析
Elasticsearch 优化分析 Elasticsearch 是一个分布式RESTful 风格的搜索和数据分析引擎广泛用于搜索引擎 日志分析 安全监测等领域在大数据量和高并发的场景下Elastic ...
- mysql性能优化的一些建议
mysql性能优化的一些建议 1.EXPLAIN 你的 SELECT 查询 查看rows列可以让我们找到潜在的性能问题. 2.为关键字段添加索引,比如:where, order by, group b ...
- 【uni-app】uniapp项目优化方式及建议
uniapp项目优化方式及建议 介绍:性能优化自古以来就是重中之重,关于uniapp项目优化方式最全整理,会根据开发情况进行补充 1.复杂页面数据区域封装成组件 场景: 例如项目里包含类似论坛页面:点 ...
- Elasticsearch优化——搜索速度优化
Elasticsearch优化--搜索速度优化 文章目录 Elasticsearch优化--搜索速度优化 1. 为文件系统cache预留足够的内存 2. 使用更快的硬件 3. 文档模型 4. 预索引数 ...
- django+haystack+elasticsearch优化查询效率
django+haystack+elasticsearch优化查询效率 背景 安装环境 配置 1.在settings中的配置 2.在子应用下创建索引文件 3.指定索引模板文件 4.使用命令创建索引 索 ...
- ElasticSearch优化系列一:集群节点规划
节点职责单一,各司其职 elasticSearch的配置文件中有2个参数:node.master和node.data.这两个参 数搭配使用时,能够帮助提供服务器性能. 数据节点node.master: ...
- ElasticSearch优化系列三:索引过程
大家可能会遇到索引数据比较慢的过程.其实明白索引的原理就可以有针对性的进行优化.ES索引的过程到相对Lucene的索引过程多了分布式数据的扩展,而这ES主要是用tranlog进行各节点之间的数据平衡. ...
- 【Elasticsearch】使用 Elasticsearch 的 44 条建议
1.概述 转载:http://itindex.net/detail/58225-elasticsearch 在搜索业务上摸爬滚打3年,使用的Es版本也从1.x升级到了5.x,扮演的角色也逐渐从Es的使 ...
- 划重点-使用ElasticSearch的44条建议
使用的Es版本也从1.x升级到了5.x,扮演的角色也逐渐从Es的使用方变为维护方,这里大致汇总了使用Es过程中踩的一些坑以及一些注意事项,也会穿插一下我们的解法. 01 - es中建索引是指创建一个保 ...
最新文章
- 走向通用智能的核心:任务树的建立
- apache2 执行ab测试
- C语言 将文件内容转换成Dump文件数据格式
- SHA1加密(简单)
- 电脑能上网,手机连上wifi不能上网
- 21秋期末考试管理学基础10241k2
- 大数据数据科学家常用面试题_进行数据科学工作面试
- 【less-7】sqli-labs靶场第七关(类似less-5)
- linux vim命令_提升生产力的20大Linux Vim命令
- Rust之字符串,元组,数组,切片,打印优化
- BackTrack5(BT5)硬盘安装完美教程
- [刘润五分钟商学院]-----工具类
- 淘宝购物车测试用例+流程图
- java实现数字转英文_Java实现数字转成英文的方法
- java 对象 转为繁体,java调用opencc,将简体中文转换成繁体
- @新手文案,学会“五感写作法”,就能描写好“细节”!
- 7000字长文深度解读:DTC商业模式,对品牌增长的颠覆式影响
- 2022 个人基本计划
- vue引入D3绘制流程图
- 【Python数据分析学习笔记Day3】(三)数据分析工具pandas,数据清洗,聚类K-Means
热门文章
- 「Wekan」- 看板工具 @20210403
- 在CentOS7上使用LXC管理容器
- 实验2《词法分析程序设计与实现》(C语言版)
- 顶级域名 一级域名 二级域名 三级域名什么区别?
- 基于RTMP的视频采集上报播放预警方案设计与实现
- 分布式数据库实战第三节 分布式数据库引擎、索引和事务
- 由于应用universal link 校验不通过 ios应用升级SDK 更换Universal Links校验
- java历史记录_简单的带历史记录的搜索功能实现
- 如何快速将MOV格式视频转换成MP4格式
- 数字电视DVB-T/T2/C/S/S2,ATSC,ISDB-T参数设置