目录
ES优化(1)-集群脑裂优化设置
https://download.csdn.net/download/weixin_39855998/11587217
ES优化(2)-增大系统打开文件数
调大系统的“最大打开文件数”,建议32K甚至是64K。 ulimit -a (查看) ulimit -n 32000(设置)
ES优化(3)-合理设置JVM内存
修改配置文件调整ES的JVM内存大小。
修改jvm.options中-Xms和-Xmx的大小, 建议设置一样大,避免频繁的分配内存。根据服务器内存大小,一般 分配60%左右(默认1g)
ES优化(4)-锁定物理内存
设置memory_lock来锁定进程的物理内存地址 避免内存交换(swapped)来提高性能
修改文件 vi config/elasticsearch.yml bootstrap.memory_lock: true
ES优化(5)-合理设置分片
适当增大分片,可以提升建立索引的能力,5-20个比较合适。如果分片数过少或过多,都会导致检索比较慢。分片数过多,会导致检索时打开文件较多,另外也会导致多台服务 器之间通讯,影响效率。
分片数过少会导至单个分片索引过大,所以检索速度慢。
建议单个分片最多存储20G左右的索引数据,通用计算公式:分片 数量=数据总量/20G
地址: https://www.elastic.co/guide/en/elasticsearch/reference/current/indice s-create-index.html
ES优化(6) -合理设置副本数
增加副本,可以提升搜索的能力。
如果副本设置过多,会对服务器造成额外的压力,因为主分片需要 给所有副本同步数据。另外,副本过多也会占用磁盘空间。
一般建议最多设置2-3个即可
地址: https://www.elastic.co/guide/en/elasticsearch/reference/current/indice s-create-index.html
ES优化(7)-合并索引
定时对索引进行合并优化,segment越多,占用的 segment memory越多,查询的性能也越差。
1)索引量不大的情况下,可以将segment设置为1。
2)在es2.1.0以前调用_optimize接口,后期改为 _forcemerge接口。 curl -u elastic:123456 -XPOST 'http://master:9200/test/_forcemerge?max_num_segment s=1'
ES优化(8) -关闭索引
针对不使用的index,建议close,减少内存占用。
只要索引处于open状态,索引库中的segement就会占用内 存,close之后就只会占用磁盘空间不会占用内存。
curl -u elastic:123456 -XPOST 'master:9200/test/_close'
ES优化(9) -清除删除文档
在Lucene中删除文档,数据不会马上在硬盘上清除,而是 在lucene索引中产生一个.del的文件,然而在检索过程中这 部分数据也会参与检索,lucene在检索过程会判断是否删 除,如果已经删除,再过滤掉,这样也会降低检索效率。
可以执行清除删除文档命令: curl -u elastic:123456 -XPOST 'http://master:9200/test/_optimize?only_expunge_deletes =true'
ES优化(10)-合理数据导入
如果在项目开始阶段,需要批量入库大量数据,建议将副本数设置 为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}}'
ES优化(11) -设置索引_all
去掉mapping中_all域,Index中默认会有_all的域,虽然会 给查询带来方便,但是会增加索引时间和索引尺寸。
地址: https://www.elastic.co/guide/en/elasticsearch/reference/cu rrent/mapping-all-field.html
ES优化(12) 设置索引_source
_source字段我在们进行检索时相当重要。
ES默认检索只会返回ID,如果在{"enabled":false}情况下, 你需通过根据这个ID去去倒排索引中去取每个Field数据, 效率不高。而反之,在{"enabled":true}的情况下可以根据 ID直接检索对应source JSON的字段,不用去倒排索引去 按Field取数据。
地址: https://www.elastic.co/guide/en/elasticsearch/reference/cu rrent/mapping-source-field.html
ES优化(13) -版本
使用Java代码操作es集群,要保证本地es的版本和集群上 es的版本保持一致。 Ø 保证集群中每个节点的JDK版本和es配置一致。