如何设置全文行间距固定值(怎么设置全文行间距)
789
2022-05-28
elasticsearch 优化(1)-集群脑裂问题
ElasticSearch 优化(2)
调大系统的“最大打开文件数”,建议32K甚至是64K
ulimit -a (查看)
ulimit -n 32000(设置)
ElasticSearch 优化(3)
修改配置文件调整ES的JVM内存大小
1)修改bin/elasticsearch.in.sh中ES_MIN_MEM和ES_MAX_MEM的大小,建议设置一样大,避免频繁的分配内存。根据服务器内存大小,一般分配60%左右(默认256M)
2)内存最大不要超过32G(详细内容见链接)
ElasticSearch 优化(4)
设置memory_lock来锁定进程的物理内存地址
避免内存交换(swapped)来提高性能
修改文件
vi config/elasticsearch.yml
bootstrap.mlockall: true(2.4.0以前)
bootstrap.memory_lock: true(2.4.3之后)
ElasticSearch 优化(5)
适当增大分片,可以提升建立索引的能力,5-20个比较合适。
如果分片数过少或过多,都会导致检索比较慢。
1)分片数过多,会导致检索时打开文件较多,另外也会导致多台服务器之间通讯,影响效率。
2)分片数过少会导至单个分片索引过大,所以检索速度慢。
3)建议单个分片最多存储20G左右的索引数据,通用计算公式:分片数量=数据总量/20G
ElasticSearch 优化(6)
合理设置副本数
1)增加副本,可以提升搜索的能力。
2)如果副本设置过多,会对服务器造成额外的压力,因为主分片需要给所有副本同步数据。另外,副本过多也会占用磁盘空间。
3)一般建议最多设置2-3个即可
ElasticSearch 优化(7)
定时对索引进行合并优化,segment越多,占用的segment memory越多,查询的性能也越差。
1)索引量不大的情况下,可以将segment设置为1。
2)在es2.1.0以前调用_optimize接口,后期改为_forcemerge接口。
curl -XPOST 'http://master:9200/dwq2/_forcemerge?max_num_segments=1'
client.admin().indices().prepareForceMerge("dwq").setMaxNumSegments(1).get();
ElasticSearch 优化(8)
针对不使用的index,建议close,减少内存占用。
只要索引处于open状态,索引库中的segement就会占用内存,close之后就只会占用磁盘空间不会占用内存。
curl -XPOST 'master:9200/dwq/_close'
ElasticSearch 优化(9)
清除删除文档
在Lucene中删除文档,数据不会马上在硬盘上清除,而是在lucene索引中产生一个.del的文件,然而在检索过程中这部分数据也会参与检索,lucene在检索过程会判断是否删除,如果已经删除,再过滤掉,这样也会降低检索效率。
可以执行清除删除文档命令:
curl -XPOST 'http://master:9200/dwq/_optimize?only_expunge_deletes=true'
client.admin().indices().prepareOptimize("dwq").setOnlyExpungeDeletes(true).get();
ElasticSearch 优化(10)
优化ES数据导入:
1)如果在项目开始阶段,需要批量入库大量数据,建议将副本数设置为0。因为es在索引数据的时候,如果副本已经存在,数据会立即同步到副本中,这样会对es增加压力。
2)等到索引完成后,再恢复副本数即可,可以提高索引效率。
curl -XGET http://master:9200/dwq/_settings?pretty
curl -XPUT 'http://master:9200/dwq/_settings' -d
'{"index":{"number_of_replicas":0}}'
curl -XPUT 'http://master:9200/dwq/_settings' -d
'{"index":{"number_of_replicas":1}}'
ElasticSearch 优化(11)
优化ES索引_all
去掉mapping中_all域,Index中默认会有_all的域,虽然会给查询带来方便,但是会增加索引时间和索引尺寸。
ElasticSearch 优化(12)
优化ES索引_source
_source字段我在们进行检索时相当重要。
ES默认检索只会返回ID,如果在{"enabled":false}情况下,你需通过根据这个ID去去倒排索引中去取每个Field数据,效率不高。
而反之,在{"enabled":true}的情况下可以根据ID直接检索对应source JSON的字段,不用去倒排索引去按Field取数据。
ElasticSearch 优化(13)
ES优化:
1)使用java代码操作es集群,要保证本地es的版本和集群上es的版本保持一致。
2)保证集群中每个节点的JDK版本和es配置一致。
全文检索 Elasticsearch 实时流计算服务 CS
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。