`
donlianli
  • 浏览: 339202 次
  • 性别: Icon_minigender_1
  • 来自: 北京
博客专栏
Group-logo
Elasticsearch...
浏览量:217957
社区版块
存档分类
最新评论

elasticsearch 1.x优化

阅读更多
关于我,邯郸人
对这类话题感兴趣?欢迎发送邮件至donlianli@126.com
 
本博文为Elasticsearch Server2nd的部分第7章部分章节的翻译,版权归原作者。

设置Filter cache

缓存是提高性能的很重要的手段,es中的filter cache能够把搜索时的filter条件的结果进行缓存,当进行相同的filter搜索时(query不同,filter条件相同),es能够很快的返回结果。这是因为第一次计算完filter后,es就把结果存储到了缓存中,下次搜索时,es就不用再计算。

Esfilter cache有两种,一种是node级别的cache(filter cache默认类型),一种是index级别的filter cacheNode级别的cache被整个node共享,并且可以使用百分比设置,对应的属性为indices.cache.filter.size,这个属性的值可以是百分比,也可以是具体的大小。Index级别的cache,顾名思义,就是针对单个索引的大小。Es官方并不推荐使用这种设置,因为谁也无法预测索引级别的缓存到底有多大(可能非常大,超过了node的对内存),一个索引可能分布在多个node上面,而多个node的结果如果汇总到一个node上,其结果可想而知。

设置Field cache

当对字段排序或者对字段做聚合(如facet)时,字段缓存(Field cache)非常重要。Es会将这些待排序或者聚合字段都加载到内存,以提高对这些字段的快速访问。注意,将字段都加载到内存是非常耗费资源的,所以,你应该保证field cache足够大,以足以将所有的结果都缓存起来,下次排序或facet时不用再次从磁盘进行加载。

可以通过设置indices.fielddata.cache.size为具体的大小,比如2GB,或者可用内存的百分比,比如40%。请注意,这个属性是node级别(不是index级别的).当这个缓存不够用时,为了跟新的缓存对象腾出空间,原来缓存的字段会被挤出来,这会导致系统性能下降。所以,请保证这个值足够大,能够满足业务需求。另外,如果你没有设置这个值,es默认缓存可以无限大。所以,在生产环境注意要设置这个值。

同时,我们也可以为field cache指定过期时间,系统默认缓存不过期。可以通过设置indices.fielddata.cache.expire10m,表示缓存10分钟过期。Es建议,最好不要设置过期时间,因为将字段加载到内存是很浪费资源的。

设置circuit breaker

Circuit breaker,断路器。这个和field cache有关系。断路器可以估算待加载的field的大小。通过断路器,可以防止将特别大的field加载到内存,导致内存溢出。断路器发现待加载的filed超过java的对内存时,会产生一个异常,防止field的继续加载,从而起到保护系统的作用。有两个属性可以设置断路器,一个是indices.fielddata.breaker.limit,这个值默认是80%。这个值可以动态修改,通过集群设置的api就可以修改。80%就是说,当待加载的field超过es可用堆内存的80%时,就会抛一个异常。

另一个属性是indices.fielddata.breaker.overhead,默认值为1.03es将使用这个值乘以field实际的大小作Field估算值。

设置Index Buffers

indices.memory.index_buffer _size,这个值默认为10%,即堆内存的10%会被用作index时的缓存,这个值可以设置百分比也可以是固定的大小。缓冲自然是越大越好。但记得千万不能超过可用的对内存,并且要跟filter cache和filed cache保证在一个合理的比例。

设置Index Refresh rate(索引刷新频率)

index.refresh_interval,默认为1秒。即被索引的数据,1秒之后才能够被搜索到。这个时间越小,搜索和索引的性能就越低。这个时间越大,索引和搜索的性能就越高。es建议,在bulk index非常大的索引数据时,将此值设置为-1,索引完毕之后再将此值修改回来。

综合考虑

记住,对ES来说,缓存(caches)与缓冲(buffers)是提高索引(index)和搜索(query)性能的关键因素。

 

在我们优化es之前,我们必须时刻牢记一点,es需要足够多的内存,越多越好。但是,也不能把所有的内存都分配给es。分配给es的内存最好是保持在物理内存的50-60%左右,因为os也需要内存支持用户进程,比如分配线程,io缓存等。但是,物理内存的50-60%也不是唯一标准。假如你的内存有256G,即便和OS预留10%的内存,也有25G,足够操作系统使用。另外,最好设置XmxXms一样大,避免heap sizeresizing

做性能测试时,在相同的情形下,测试结果应该是可以重现的。你做的任何参数的修改,都应该使用进行性能测试,看性能是否有所提高。以性能测试为检验标准,是我们进行优化的必要前提。

 
0
0
分享到:
评论
1 楼 不帅sina 2018-01-31  
ElasticSearch视频教程
网盘地址:https://pan.baidu.com/s/1smQzpal 密码: jqde
备用地址(腾讯微云):http://url.cn/5TeD8vj 密码:Io3ank

相关推荐

    springboot1.x整合elasticsearch5.x

    在本项目中,我们将探讨如何将Spring Boot 1.x与Elasticsearch 5.x进行整合,尽管Spring Boot 1.x官方文档中只提供了与Elasticsearch 2.x的集成指南。 首先,要整合Spring Boot 1.x和Elasticsearch 5.x,我们需要...

    Elasticsearch 7.x 单机多node部署步骤 X-Pack设置用户密码+安装包

    在Elasticsearch 7.x版本中,单机多node部署是一种常见的优化方案,用于提高数据处理能力。以下是一步步的详细部署过程: 1. **环境准备**: 首先确保你的系统支持Elasticsearch 7.x,通常Linux发行版如Ubuntu、...

    02-Elasticsearch 8.x 向量搜索使用详解 杭州 1.6 2024

    总的来说,Elasticsearch 8.x的向量搜索功能为开发者提供了强大的工具,可以处理复杂的语义搜索任务,同时优化性能和资源利用率。通过深入理解这些概念和API,开发者可以构建出更加智能和高效的搜索引擎。

    elasticsearch 2.X版本 IK分词器

    1. **下载与安装**:从官方网站或GitHub获取elasticsearch-analysis-ik-2.x压缩包,解压后将插件目录复制到Elasticsearch的plugins目录下。 2. **重启Elasticsearch**:启动或重启Elasticsearch服务,系统会自动...

    elasticsearch5.X 安装和head插件安装

    Elasticsearch(简称ES)是一款基于Lucene的开源全文搜索引擎,提供分布式、RESTful风格的搜索和数据分析功能。在5.x版本中,它增强了性能,优化了API,并引入了许多新特性。本文将详细介绍如何在本地环境中安装...

    Elasticsearch5.x安装部署

    ### Elasticsearch 5.x在Linux环境下的安装部署指南 #### 一、环境准备 在开始部署Elasticsearch 5.x之前,我们需要确保系统环境满足以下条件: 1. **操作系统**: Linux (推荐使用稳定版本如CentOS 7) 2. **Java...

    Opengl ES 3.x游戏开发(上)源码

    1. **顶点着色器(Vertex Shader)与片段着色器(Fragment Shader)**:OpenGL ES 3.x的核心是GLSL(OpenGL Shading Language),用于编写运行在GPU上的程序。顶点着色器处理几何数据,如位置、颜色和法线,而片段...

    elasticsearch5.x的java实现搜索

    在Elasticsearch 5.x中,对性能和用户体验进行了优化,引入了更强大的分析器、更灵活的数据模型以及改进的API。 2. **Java API**: Elasticsearch提供了Java REST客户端,使得开发者可以直接在Java应用中与ES...

    elasticsearch5.x-head-for chrome.zip

    "elasticsearch5.x-head"是一个用于Elasticsearch的可视化管理工具,方便用户通过网页界面直观地查看和管理索引、节点、集群等信息。 "elasticsearch5.x-head"插件专为Elasticsearch 5.x版本设计,提供了一个直观的...

    elasticsearch-6.8.18.rar(elasticsearch-6.8.18.zip)

    1. 分布式特性:Elasticsearch设计的核心就是分布式,它可以将数据分布在多个节点上,实现自动的故障转移和负载均衡。这使得Elasticsearch能够处理大规模的数据,并保持高可用性。 2. RESTful API:Elasticsearch...

    opengl es 3.x

    OpenGL ES 3.x是移动设备和嵌入式系统的图形处理标准,它在OpenGL的基础上进行了优化,专门针对资源有限但需要高性能图形渲染的平台。OpenGL ES 3.x版本带来了许多重要的新特性和性能提升,旨在满足现代移动游戏和...

    elasticsearch-7.14.2-windows-x86_64.zip

    4. **类型(Type)**:在Elasticsearch 7.x版本后已被废弃,现在所有数据都默认存储在名为`_doc`的类型中。 5. **文档(Document)**:存储在索引中的具体数据记录,以JSON格式表示。 6. **分片(Shard)**:索引可以被...

    《OpenGL ES 3.x游戏开发 上卷》源码

    通过阅读和分析这些源码,开发者不仅能学习如何在OpenGL ES 3.x环境中创建游戏,还能了解如何优化性能、管理资源,并掌握高级图形效果的实现方法。这些技能对于在移动平台进行游戏开发的工程师来说至关重要。

    Elasticsearch7.x学习资料,非常全面

    1-尚硅谷项目课程系列之Elasticsearch.pdf:这很可能是尚硅谷教育机构提供的一个关于Elasticsearch 7.x 的项目课程资料。这份PDF可能会涵盖从基础到进阶的各种主题,如Elasticsearch的安装与配置、索引管理、数据...

    Elasticsearch5.x Java API手册

    Elasticsearch 5.x 版本的 Java API 手册是开发者进行 Elasticsearch 相关开发的重要参考资料。Elasticsearch 是一个流行的开源全文搜索引擎,广泛应用于数据检索、分析和实时数据存储。Java API 提供了与 Elastic...

    企业级Elasticsearch 8.X技术来临!性能优化与集群部署 基础与进阶全面实战

    性能优化与集群部署 基础与进阶全面实战”旨在帮助学员深入了解Elasticsearch 8.X版本的核心技术,掌握性能优化与集群部署的关键知识,从而能够更好地应对企业级应用中的挑战。 课程亮点: Elasticsearch基础概念...

    阿里云Elasticsearch7.x jar包.zip

    阿里云Elasticsearch 7.x版本是一个高度可扩展的开源全文搜索引擎,基于Lucene构建,设计用于处理大量数据并提供实时分析。Elasticsearch不仅是一个搜索引擎,还是一个数据分析和存储平台,广泛应用于日志分析、监控...

    elasticsearch7.17.10版本分词器插件安装包

    在日志收集和数据分析领域,Elasticsearch(简称ES)扮演着重要的角色。作为一个强大的全文搜索引擎,Elasticsearch允许用户通过简单的API进行数据索引、搜索、分析和可视化。然而,为了更好地处理中文等复杂语言,...

Global site tag (gtag.js) - Google Analytics