`

Elastic 优化之路

 
阅读更多

之前没有接触过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优化及升级1

    为了确保其高效稳定运行,对Elasticsearch进行优化和升级是必不可少的。以下是一些关键的优化策略,主要关注内存管理、系统配置、索引设置以及网络配置。 1. 内存优化:Elasticsearch 建议使用系统内存的50%作为堆...

    百度Elasticsearch实践及优化-高攀

    在本文中,我们将深入探讨百度在Elasticsearch实践与优化方面的经验分享,主要基于高攀的演讲内容。Elasticsearch是一种流行的开源全文搜索引擎,广泛应用于大数据分析和实时搜索。百度作为中国领先的互联网技术公司...

    Elasticsearch 存储方式和管理优化细节1

    Elasticsearch 是一个分布式搜索引擎,其数据存储方式和管理优化对于高效检索和稳定运行至关重要。在Elasticsearch中,数据存储的基本单位是段(segment),每个段都是一个倒排索引,由Lucene生成。每次数据写入后,...

    ElasticSearch性能优化策略

    ### ElasticSearch性能优化策略 ElasticSearch是一种广泛应用于日志分析、全文检索、实时数据分析等场景的搜索引擎。随着数据量的增大与业务复杂度的提高,如何高效地使用ElasticSearch变得尤为重要。本文将详细...

    Elasticsearch技术解析与实战+Elasticsearch权威指南

    在《Elasticsearch技术解析与实战》一书中,你将详细了解到如何安装配置Elasticsearch,设置集群,以及优化索引和查询性能。《Elasticsearch 权威指南(中文版)清晰PDF》则更深入地探讨了高级特性和最佳实践,包括...

    ElasticHD.zip

    Elasticsearch(简称ES)是一款高性能、分布式、全文搜索引擎,常用于海量数据的实时分析、日志收集与...通过使用ElasticHD,用户可以更好地理解、维护和优化自己的Elasticsearch集群,提升整个系统的性能和稳定性。

    Elasticsearch优化1

    在本文中,我们将深入探讨Elasticsearch的优化策略,这些策略涵盖了内存管理、系统配置、索引设置、集群通信和数据恢复等多个方面。Elasticsearch是一个高性能的全文搜索引擎,优化其性能对于提升系统的整体效率至关...

    elasticsearch分布式优化配置大全

    本人在实际的工作中,负责ES平台的搭建以及维护,在实际中总结的集群优化准则,所有集群通用,性能提升有3-5倍

    elasticsearch elasticsearch-6.2.2 elasticsearch-6.2.2.zip 下载

    Elasticsearch 6.x系列相较于5.x版本有了显著的改进和增强,尤其是在性能优化和安全性方面。具体到6.2.2版本,它不仅继承了6.x系列的优势,还针对早期版本的一些已知问题进行了修复,提高了系统的稳定性和可靠性。...

    1_elasticsearch技术解析与实战

    **Elasticsearch技术解析与实战** Elasticsearch是一款开源、分布式、实时的全文搜索和分析引擎,基于Lucene构建,广泛应用于日志分析、实时监控、数据搜索等多个领域。其核心特性包括强大的全文检索能力、分布式...

    elasticsearch分布式优化配置总结

    本人在工作期间主要负责公司的集群维护与ES的分布式平台搭建,在这期间总结了自己的一套关于ES集群的优化配置的准则,性能提升有3-5倍,希望可以帮到你

    elasticsearch常用版本

    Elasticsearch是一款强大的开源搜索引擎,广泛应用于大数据分析和实时搜索领域。它基于Lucene库,提供了分布式、全文检索、近实时处理以及丰富的数据分析能力。在本文中,我们将深入探讨Elasticsearch的不同版本及其...

    day14-ElasticStack学习之Elasticsearch进阶.zip

    总之,"ElasticStack学习之Elasticsearch进阶"课程涵盖了Elasticsearch的各个方面,从基础概念到高级特性,旨在帮助开发者充分利用这个强大的搜索引擎。通过理论与实践的结合,学员们不仅能理解Elasticsearch的工作...

    Elasticsearch技术解析与实战 ,朱林(完整板)

    1. **分布式架构**:Elasticsearch的核心特性之一是分布式,它支持数据的分布式存储和检索,能够实现高可用性和水平扩展。每个节点都可以存储和处理数据,通过集群通信协调工作。 2. **文档型数据库**:Elastic...

    elasticsearch6.6.0 aarch64 arm

    Elasticsearch 6.6.0 AArch64 ARM 是专为华为ARM架构服务器优化的搜索引擎和数据分析平台。这个版本是基于官方的x86发行版进行重新编译的,以适应ARM处理器的指令集,确保在华为的ARM服务器上能够高效、稳定地运行。...

    elasticsearch运维实践

    Elasticsearch的性能优化主要包括两个部分:索引性能优化和查询性能优化。索引性能优化可以通过调整索引的参数和使用倒排索引来实现,而查询性能优化可以通过使用Filter和缓存来实现。 10. Elasticsearch的集群规划...

    elasticsearch-hadoop-8.8.0

    标题"elasticsearch-hadoop-8.8.0"指的是该组件的一个特定版本,即8.8.0版,这通常包含了针对该版本的优化和新功能。 在描述中提到,“用于hdfs集群访问ES的工具类型,可以将HQL转化为ES识别的命令”,这里有几个...

    elasticsearch配置优化文档

    ### Elasticsearch配置优化要点 #### 一、Java (JVM) 版本的选择 Elasticsearch 是基于 Java 构建的应用程序,它至少需要 Java 8(即 Java 1.8)来运行。根据官方建议,建议使用 **1.8.0_73 或更高版本** 的 Java...

    ElasticSearch Head 适配ElasticSearch 7.0 +

    随着ElasticSearch的发展,每个新版本都带来了许多改进和优化,因此ElasticSearch Head需要不断更新以适配新的ElasticSearch版本。"ElasticSearch Head 适配ElasticSearch 7.0 +"表示该版本的ElasticSearch Head已经...

    Elasticsearch技术解析与实战_高清 带索引书签目录_朱林(著)

    - **搜索性能优化**:探讨如何通过设置缓存、调整索引设置、优化查询语句来提升搜索性能。 - **集群管理**:集群的配置、监控和维护,包括节点间通信、数据平衡和故障恢复。 **5. 实战案例** - **日志分析**:利用...

Global site tag (gtag.js) - Google Analytics