关闭

Elasticsearch 集群优化总结

标签: elasticsearch优化集群
2891人阅读 评论(3) 收藏 举报
分类:

一、硬件层面优化配置

(1) 合理选择服务器。

Elasticsearch的运行对JDK版本、Linux内核、最小内存等都有一定的要求,在安装部署集群之前需要选择和Elasticsearch版本匹配的的服务器配置,同时也要根据业务量做集群规划。

(2)提高Linux系统应用程序最大打开文件数。

在启动Elasticsearch集群以前,增大机器的最大文件数,可以避免数据导入高峰时期打开文件过多异常的发生。

(3)增大虚拟映射内存。

Elasticsearch写入文档时最终要使用Lucene构建倒排索引,增大虚拟映射内存可以加快索引速度。

二、数据导入性能优化

(4)关闭_all字段。

_all字段是把一个文档的所有字段合并在一起的超级字段,在搜索字段不明确的情况下可以对_all进行搜索,默认是开启的。如果没有模糊搜索的需要,关闭_all字段可以缩小索引大小,提高导入性能。

(5)设置副本为0。

如果副本不为0,Master节点需要把文档复制到副本分片上,复制过程需要消耗系统资源,因此可以在数据导入阶段设置副本为0,等数据导入完成以后再提高副本数。

(6)对不必要的字段不索引。

Elasticsearch可以通过参数设置字段是否建索引,建索引需要分词、解析、建倒排记录表等一系列过程,可以根据业务需求对不必要的字段(比如需要精确匹配的地名)不索引。

(7)使用批量导入。

文档一条一条的导入会导致频繁的磁盘读写,使用批量导入可以降低I/O消耗。

(8)适当增大刷新间隔。

索引数据过程中为了使数据尽快可搜索,Elasticsearch会不断刷新创建新的段并打开它,默认1s刷新1次,在数据导入期间可适当增大刷新间隔,待数据导入完成以后再恢复至默认设置。

三、查询优化

(9)使用路由。

路由机制即是通过哈希算法,将具有相同哈希值的文档放置到同一个主分片中,合理使用路由机制可以提高查询性能。

(10)正确使用Query和Filter。

Query和Filter都有查询的功能,但是Query使用的是搜索机制,需要通过评分模型计算相关度,而Filter是过滤机制,只需要根据条件进行过滤,无需计算相关度,因此Filter响应时间更快。

(11)使用Optimize API合并段。

Elasticsearch中每个分片有多个段,每个段都是一个完整的倒排索引,在查询时Elasticsearch会把所有段的查询结果汇总作为最终的查询结果。当索引的文档不断增多时段也会增多,查询性能就会下降。Optimize API可以强制分片进行段合并,把多个小的段合并成大的段(通常合并成一个段),通过减少段的数量达到提高搜索性能的目的。

在日志处理场景中,日志的存储一般按天、周、月存入索引,而且日志一旦索引就不会再修改,索引只是可读的,这种情况下把索引段设为1是非常有效的。


欢迎补充

2
0
查看评论

Elasticsearch 集群优化篇

对于集群的监控和优化是很重要的一部分,如果想持久维护集群,单单靠增加物理内存,cpu,硬盘是不够的,必须通过一些方法来进行优化。
  • Gamer_gyt
  • Gamer_gyt
  • 2017-03-18 15:15
  • 4693

Elasticsearch 5.x (二) 集群模式

Elasticsearch 5.x (二) 集群模式
  • wuxiao5570
  • wuxiao5570
  • 2017-01-13 13:07
  • 4475

ElasticSearch性能优化策略

一、服务器部署算法的基本思想 1、增加1-2台服务器,用于负载均衡节点 elasticSearch的配置文件中有2个参数:node.master和node.data。这两个参 数搭配使用时,能够帮助提供服务器性能。 1.1> node.master: fa...
  • mlljava1111
  • mlljava1111
  • 2016-04-21 20:58
  • 748

亿级规模的Elasticsearch优化实战

本次分享主要包含两个方面的实战经验:索引性能和查询性能。 一. 索引性能(Index Performance) 首先要考虑的是,索引性能是否有必要做优化? 索引速度提高与否?主要是看瓶颈在什么地方,若是 Read DB(产生D
  • opensure
  • opensure
  • 2015-08-13 19:43
  • 54051

Elasticsearch集群管理、优化以及监控

ES集群管理角色分配①设置某台机器只做主节点,不做索引和shard,负责cluster内部的协调,数据的读取由集群的各个节点,共同完成的,但是数据的修改只有在master上完成。 node.master:true node.data:false ②设置某台机器做索引和shard,不做主节点 ...
  • BlackEnn
  • BlackEnn
  • 2017-02-16 20:56
  • 1529

生产环境elasticsearch5.0.1集群的部署配置详解

线上环境elasticsearch5.0.1集群的配置部署 es集群的规划: 硬件: 7台8核、64G内存、2T ssd硬盘加1台8核16G的阿里云服务器 其中一台作为kibana+kafka连接查询的服务器 其他6台都作为node和master两种角色 操作系统:centos7.2 x...
  • reblue520
  • reblue520
  • 2017-01-13 20:24
  • 3592

Elasticsearch集群启动关闭重启操作

ES集群如果节点较多,在重启,关闭,启动等操作的时候,需要一个一个操作,非常麻烦,下面提供一种方式,可以通过脚本的方式,在一台节点上操作即可:一、配置节点之间免密码登录;具体配置方法,请百度搜索下就有了。二、创建一下脚本完成操作: 集群启动 在elasticsearch安装目录下创建elastic...
  • likui1314159
  • likui1314159
  • 2016-11-06 20:03
  • 8229

Elasticsearch学习笔记(七)Elasticsearch分布式集群工作原理简介

路由我们前面知道,ES集群每一个节点都可以接受命令,但是数据是分片存储的,那ES集群怎么知道应该去哪个节点上修改哪个分片的数据呢? 与redis等其他分布式一样,当一个请求到来时,首先会根据ID进行取余来将请求分配到对应的节点上。 路由算法shard = hash(routing) % numb...
  • fgyibupi
  • fgyibupi
  • 2017-01-25 12:19
  • 1986

谈一谈Elasticsearch的集群部署

Elasticsearch是一个分布式的搜索引擎和数据分析引擎。本文重点谈一谈Elasticsearch的集群节点相关问题,搞清楚这些是进行Elasticsearch集群部署和拓扑结构设计的前提。
  • zwgdft
  • zwgdft
  • 2017-01-18 14:42
  • 5215

elasticsearch 1.x集群优化

设置 Filter cache 缓存是提高性能的很重要的手段, es 中的 filter cache 能够把搜索时的 filter 条件的结果进行缓存,当进行相同的 filter 搜索时( qu...
  • xuguokun1986
  • xuguokun1986
  • 2017-04-27 18:12
  • 98
    《从Lucene到Elasticsearch:全文检索实战》
    Lucene、ES、ELK开发交流群:370734940
    Lucene、ES、ELK开发交流
    个人资料
    • 访问:929800次
    • 积分:9210
    • 等级:
    • 排名:第2389名
    • 原创:209篇
    • 转载:2篇
    • 译文:6篇
    • 评论:467条
    StackOverFlow
    http://stackoverflow.com/users/6526424
    统计
    博客专栏
    文章分类
    最新评论