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优化的一些建议相关推荐

  1. 【es】使用ElasticSearch的44条建议 性能优化

    1.概述 转载:使用ElasticSearch的44条建议 建议去看原文,这里是防丢失 在搜索业务上摸爬滚打3年,使用的Es版本也从1.x升级到了5.x,扮演的角色也逐渐从Es的使用方变为维护方,这里 ...

  2. Elasticsearch 优化分析

    Elasticsearch 优化分析 Elasticsearch 是一个分布式RESTful 风格的搜索和数据分析引擎广泛用于搜索引擎 日志分析 安全监测等领域在大数据量和高并发的场景下Elastic ...

  3. mysql性能优化的一些建议

    mysql性能优化的一些建议 1.EXPLAIN 你的 SELECT 查询 查看rows列可以让我们找到潜在的性能问题. 2.为关键字段添加索引,比如:where, order by, group b ...

  4. 【uni-app】uniapp项目优化方式及建议

    uniapp项目优化方式及建议 介绍:性能优化自古以来就是重中之重,关于uniapp项目优化方式最全整理,会根据开发情况进行补充 1.复杂页面数据区域封装成组件 场景: 例如项目里包含类似论坛页面:点 ...

  5. Elasticsearch优化——搜索速度优化

    Elasticsearch优化--搜索速度优化 文章目录 Elasticsearch优化--搜索速度优化 1. 为文件系统cache预留足够的内存 2. 使用更快的硬件 3. 文档模型 4. 预索引数 ...

  6. django+haystack+elasticsearch优化查询效率

    django+haystack+elasticsearch优化查询效率 背景 安装环境 配置 1.在settings中的配置 2.在子应用下创建索引文件 3.指定索引模板文件 4.使用命令创建索引 索 ...

  7. ElasticSearch优化系列一:集群节点规划

    节点职责单一,各司其职 elasticSearch的配置文件中有2个参数:node.master和node.data.这两个参 数搭配使用时,能够帮助提供服务器性能. 数据节点node.master: ...

  8. ElasticSearch优化系列三:索引过程

    大家可能会遇到索引数据比较慢的过程.其实明白索引的原理就可以有针对性的进行优化.ES索引的过程到相对Lucene的索引过程多了分布式数据的扩展,而这ES主要是用tranlog进行各节点之间的数据平衡. ...

  9. 【Elasticsearch】使用 Elasticsearch 的 44 条建议

    1.概述 转载:http://itindex.net/detail/58225-elasticsearch 在搜索业务上摸爬滚打3年,使用的Es版本也从1.x升级到了5.x,扮演的角色也逐渐从Es的使 ...

  10. 划重点-使用ElasticSearch的44条建议

    使用的Es版本也从1.x升级到了5.x,扮演的角色也逐渐从Es的使用方变为维护方,这里大致汇总了使用Es过程中踩的一些坑以及一些注意事项,也会穿插一下我们的解法. 01 - es中建索引是指创建一个保 ...

最新文章

  1. 走向通用智能的核心:任务树的建立
  2. apache2 执行ab测试
  3. C语言 将文件内容转换成Dump文件数据格式
  4. SHA1加密(简单)
  5. 电脑能上网,手机连上wifi不能上网
  6. 21秋期末考试管理学基础10241k2
  7. 大数据数据科学家常用面试题_进行数据科学工作面试
  8. 【less-7】sqli-labs靶场第七关(类似less-5)
  9. linux vim命令_提升生产力的20大Linux Vim命令
  10. Rust之字符串,元组,数组,切片,打印优化
  11. BackTrack5(BT5)硬盘安装完美教程
  12. [刘润五分钟商学院]-----工具类
  13. 淘宝购物车测试用例+流程图
  14. java实现数字转英文_Java实现数字转成英文的方法
  15. java 对象 转为繁体,java调用opencc,将简体中文转换成繁体
  16. @新手文案,学会“五感写作法”,就能描写好“细节”!
  17. 7000字长文深度解读:DTC商业模式,对品牌增长的颠覆式影响
  18. 2022 个人基本计划
  19. vue引入D3绘制流程图
  20. 【Python数据分析学习笔记Day3】(三)数据分析工具pandas,数据清洗,聚类K-Means

热门文章

  1. 「Wekan」- 看板工具 @20210403
  2. 在CentOS7上使用LXC管理容器
  3. 实验2《词法分析程序设计与实现》(C语言版)
  4. 顶级域名 一级域名 二级域名 三级域名什么区别?
  5. 基于RTMP的视频采集上报播放预警方案设计与实现
  6. 分布式数据库实战第三节 分布式数据库引擎、索引和事务
  7. 由于应用universal link 校验不通过 ios应用升级SDK 更换Universal Links校验
  8. java历史记录_简单的带历史记录的搜索功能实现
  9. 如何快速将MOV格式视频转换成MP4格式
  10. 数字电视DVB-T/T2/C/S/S2,ATSC,ISDB-T参数设置