设置Filter cache
缓存是提高性能的很重要的手段,es中的filter cache能够把搜索时的filter条件的结果进行缓存,当进行相同的filter搜索时(query不同,filter条件相同),es能够很快的返回结果。这是因为第一次计算完filter后,es就把结果存储到了缓存中,下次搜索时,es就不用再计算。
Es的filter cache有两种,一种是node级别的cache(filter cache默认类型),一种是index级别的filter cache。Node级别的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.expire为10m,表示缓存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.03,es将使用这个值乘以field实际的大小作Field估算值。
设置Index Buffers
设置Index Refresh rate(索引刷新频率)
综合考虑
记住,对ES来说,缓存(caches)与缓冲(buffers)是提高索引(index)和搜索(query)性能的关键因素。
在我们优化es之前,我们必须时刻牢记一点,es需要足够多的内存,越多越好。但是,也不能把所有的内存都分配给es。分配给es的内存最好是保持在物理内存的50-60%左右,因为os也需要内存支持用户进程,比如分配线程,io缓存等。但是,物理内存的50-60%也不是唯一标准。假如你的内存有256G,即便和OS预留10%的内存,也有25G,足够操作系统使用。另外,最好设置Xmx和Xms一样大,避免heap size的resizing。
做性能测试时,在相同的情形下,测试结果应该是可以重现的。你做的任何参数的修改,都应该使用进行性能测试,看性能是否有所提高。以性能测试为检验标准,是我们进行优化的必要前提。
相关推荐
在本项目中,我们将探讨如何将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部署是一种常见的优化方案,用于提高数据处理能力。以下是一步步的详细部署过程: 1. **环境准备**: 首先确保你的系统支持Elasticsearch 7.x,通常Linux发行版如Ubuntu、...
总的来说,Elasticsearch 8.x的向量搜索功能为开发者提供了强大的工具,可以处理复杂的语义搜索任务,同时优化性能和资源利用率。通过深入理解这些概念和API,开发者可以构建出更加智能和高效的搜索引擎。
通过上述内容可以看出,《Elasticsearch 1.x Java 教程》不仅涵盖了Elasticsearch 的基本使用方法,还深入讨论了如何进行性能优化和如何解决实际应用中的常见问题。对于希望掌握Elasticsearch 的开发人员来说,这是...
1. **下载与安装**:从官方网站或GitHub获取elasticsearch-analysis-ik-2.x压缩包,解压后将插件目录复制到Elasticsearch的plugins目录下。 2. **重启Elasticsearch**:启动或重启Elasticsearch服务,系统会自动...
Elasticsearch(简称ES)是一款基于Lucene的开源全文搜索引擎,提供分布式、RESTful风格的搜索和数据分析功能。在5.x版本中,它增强了性能,优化了API,并引入了许多新特性。本文将详细介绍如何在本地环境中安装...
### Elasticsearch 5.x在Linux环境下的安装部署指南 #### 一、环境准备 在开始部署Elasticsearch 5.x之前,我们需要确保系统环境满足以下条件: 1. **操作系统**: Linux (推荐使用稳定版本如CentOS 7) 2. **Java...
1. **顶点着色器(Vertex Shader)与片段着色器(Fragment Shader)**:OpenGL ES 3.x的核心是GLSL(OpenGL Shading Language),用于编写运行在GPU上的程序。顶点着色器处理几何数据,如位置、颜色和法线,而片段...
在Elasticsearch 5.x中,对性能和用户体验进行了优化,引入了更强大的分析器、更灵活的数据模型以及改进的API。 2. **Java API**: Elasticsearch提供了Java REST客户端,使得开发者可以直接在Java应用中与ES...
在日志收集和数据分析领域,Elasticsearch(简称ES)扮演着重要的角色。作为一个强大的全文搜索引擎,Elasticsearch允许用户通过简单的API进行数据索引、搜索、分析和可视化。然而,为了更好地处理中文等复杂语言,...
"elasticsearch5.x-head"是一个用于Elasticsearch的可视化管理工具,方便用户通过网页界面直观地查看和管理索引、节点、集群等信息。 "elasticsearch5.x-head"插件专为Elasticsearch 5.x版本设计,提供了一个直观的...
OpenGL ES 3.x是移动设备和嵌入式系统的图形处理标准,它在OpenGL的基础上进行了优化,专门针对资源有限但需要高性能图形渲染的平台。OpenGL ES 3.x版本带来了许多重要的新特性和性能提升,旨在满足现代移动游戏和...
1. 分布式特性:Elasticsearch设计的核心就是分布式,它可以将数据分布在多个节点上,实现自动的故障转移和负载均衡。这使得Elasticsearch能够处理大规模的数据,并保持高可用性。 2. RESTful API:Elasticsearch...
首先,版本号7.17.6代表了Elasticsearch的特定更新迭代,通常包含了错误修复、性能优化以及新功能的添加。每个版本的更新都会在官方文档中详细记录,以便用户了解改进之处。 1. **64位系统支持**: "x86_64" 表示这...
通过阅读和分析这些源码,开发者不仅能学习如何在OpenGL ES 3.x环境中创建游戏,还能了解如何优化性能、管理资源,并掌握高级图形效果的实现方法。这些技能对于在移动平台进行游戏开发的工程师来说至关重要。
1-尚硅谷项目课程系列之Elasticsearch.pdf:这很可能是尚硅谷教育机构提供的一个关于Elasticsearch 7.x 的项目课程资料。这份PDF可能会涵盖从基础到进阶的各种主题,如Elasticsearch的安装与配置、索引管理、数据...
Elasticsearch 5.x 版本的 Java API 手册是开发者进行 Elasticsearch 相关开发的重要参考资料。Elasticsearch 是一个流行的开源全文搜索引擎,广泛应用于数据检索、分析和实时数据存储。Java API 提供了与 Elastic...
性能优化与集群部署 基础与进阶全面实战”旨在帮助学员深入了解Elasticsearch 8.X版本的核心技术,掌握性能优化与集群部署的关键知识,从而能够更好地应对企业级应用中的挑战。 课程亮点: Elasticsearch基础概念...
阿里云Elasticsearch 7.x版本是一个高度可扩展的开源全文搜索引擎,基于Lucene构建,设计用于处理大量数据并提供实时分析。Elasticsearch不仅是一个搜索引擎,还是一个数据分析和存储平台,广泛应用于日志分析、监控...