之前没有接触过elastic ,但是对这个名字仰慕已久,期望着有朝一日目睹一下他的芳容,见识一下她的威力。机缘巧合,最近一个项目需求的使用场景正好和elastic 契合。于是我开始尝试着去揭开她的面纱……
es中的数据来源有两种,一种是通过调度任务周期性的将最新收集的数据导入es , ps: hive 2 es的模式。另外一种是针对庞大的历史数据,通过spark作业来 实现sparkSql 2 es的模式。接下来总结一下我们路上碰到一些问题和解决办法。
以下优化的硬件配置 背景:
5 nodes,
5 shards
1 replica
4 core
8G mem
普通硬盘
1.产品需求到方案设计。
往往一些性能问题都是当初的存储方案设计失误导致的。这里说的存储方案即 如何合理的规划集群、机器、索引、shard、replica、存储空间,我们的一个目标和原则:理性的衡量索引的数量和单索引下的doc 数量。我们公司对于一般的业务提供的es集群的配置:5nodes,4 core,8G mem
(1)衡量单个索引下的doc数来创建索引:可以按照业务的类型、按照月份
(2)单索引默认配置shards 为5 ,如果数据量非常大,分片多一些。分片越多在查询中涉及到的合并和聚合需要更多的资源。
(3)replica 默认1,负分片起到容灾的作用,数量越大那么数据同步的IO就会越大
2.写的性能优化
(1)通过设置副本数为0,减少主分片和副分片之间数据同步的IO资源消耗(针对写操作较集中的业务场景,)
(2)修改索引刷新频率,默认值1s刷新一次。可以调整后10s刷新一次,减少数据刷新占用的系统性能 (适合查询的实时性要求不高的场景)
(3)单次写入es的数据量不要太大建议5-15MB,否则会EsRejectedExecutionException,就说明已经到达节点的瓶颈了,就需要减少并发或者升级硬件增加节点。(4)使用用bulk导入大量的数据
3.查询优化
(1)routing 的设置
系统计算索引存储的位置是通过公式来实现的:shard_num = hash(_routing) % num_primary_shards ,系统默认是按照索引的Id来做routing 。如果可以按照业务场景中的某个字段来做routing,那么我们根据这个字段来搜索的时候可以很快的定位到相应的shard,减少全索引扫描,从而极大的提高性能。但是需要注意的是 routing一旦创建,那么num_primary_shards是不可以轻易的改变的,否则routing的策略就会失效。
(2)使用filter
当进行精确查询时,过滤器filter是十分重要的,因为它们效率非常高,过滤器不计算相关性(直接跳过了整个记分阶段)而且很容易进行缓存。
(3)使用segment 合并
lucene在插入和更新数据的时候会生成很多segment来支持实时查询,因此会产生很多segment碎片,索引在搜索的时候会查询多个segment,进行合并后可以减少segment的查询次数,提升速度。建议max_num_segments=1
(4)根据业务情况缩小查询范围
4 聚合和排序
Elasticsearch通过反向索引做搜索,通过DocValues列式存储做分析,将搜索和分析的场景统一到了一个分布式系统中,通过设置DocValues
相关推荐
Elasticsearch优化及升级Elasticsearch优化内存优化(系统内存的50%,最大32G)-Xmx8g -Xms8g禁止交换区和最大映射文件数
百度Elasticsearch实践及优化-高攀,看百度如何玩转elasticsearch,百度针对elasticsearch进行优化及开源
ElasticSearch性能优化策略
Elasticsearch优化1
本人在实际的工作中,负责ES平台的搭建以及维护,在实际中总结的集群优化准则,所有集群通用,性能提升有3-5倍
本人在工作期间主要负责公司的集群维护与ES的分布式平台搭建,在这期间总结了自己的一套关于ES集群的优化配置的准则,性能提升有3-5倍,希望可以帮到你
Elasticsearch技术解析与实战+Elasticsearch权威指南两本电子书,合集共享,让你早日学习了解Elasticsearch
1_elasticsearch技术解析与实战1_elasticsearch技术解析与实战1_elasticsearch技术解析与实战
1.节点下线 2.迁移分 3.冷热数据的读写分离 4. 检测参数优化 5.磁盘限额: 6.在线缩容 7.过滤器 8.通过监控任务,check集群健康 9.持ch
Elasticsearch技术解析与实战 ,朱林(完整板)Elasticsearch技术解析与实战 ,朱林(完整板)Elasticsearch技术解析与实战 ,朱林(完整板)
关于ElasticSearch5.x从不同方面部署优化细节和建议。
阿里云Elasticsearch大规模集群治理及内核优化实践 阿里云Elasticsearch在安全领域的应用 从Docker到K8S:新东方生产ELK的进化史 滴滴Elasticsearch集群跨版本升级以及平台重构 基于Consul的多Beats接入管控与多ES...
elasticsearch技术解析与实战,压缩包第二部分。
ElasticSearch技术文档、ElasticSearch优化方案及ElasticSearch运营手册
Elasticsearch技术解析与实战,书藉高清,带索引书签目录,非常方便阅读。
针对这一问题,提出了将elastic net方法引入到超网络构建中,并且应用于抑郁症患者与正常被试的分类。实验结果显示基于LASSO与基于elastic net的方法分别可以达到83.33%与86.36%的分类准确率。分类结果表明与原有...
Painless是Elastic开发并做了专门的优化,相较之前的脚本更快、安全、易使用、可靠。 Painless脚本的目标是使编写脚本对用户来说无痛,特别是对于来自Java或Groovy环境的用户。可能你还不熟悉Elasticsearch脚本,...
该资源是对一个饭店外卖配送问题的最优路径求解. 通过编写Python脚本, 实现了利用elasticsearch读取大型数据, 然后通过gurobi对模型进行求解, ...另: 在使用该资源前, 请确保已安装好python/gurobi/elasticsearch等.
ElasticSearch写入原理及优化案例,此文章深入刨析了ElasticSearch在put和get时的原理。并且对于批量数据写入时进行优化给出最佳的方案和示例