ES 手册
如何提高ES的性能
不要返回较大的结果集
ES是设计成一个搜索引擎的,只擅长返回匹配查询较少文档,如果需要返回非常多的文档需要使用Scroll。
避免稀疏
因为ES是基于Lucene来索引和存储数据的,所以对稠密的数据更有效。Lucene能够有效的确定文档是通过一个整数的文档id,无论有没有数据都会话费一个字节存储id。稀疏主要影响norms和doc_values,一些可以避免稀疏的推荐:
避免将不相关的数据放到相同的索引中
规范的文档结构
使用相同的字段名来保存同样的数据。
避免类型
不用norms和doc_values在稀疏字段
调整索引速度
使用bulk请求
并且每个请求不超过几十M,因为太大会导致内存使用过大
使用 multiple workers/threads发送数据到ES
多进程或者线程,如果看到TOO_MANY_REQUESTS (429)和EsRejectedExecutionException则说明ES跟不上索引的速度,当集群的I/O或者CPU饱和就得到了工作者的数量。
增加刷新间隔
index.refresh_interval默认是1s,可以改成30s以减少合并压力。
在加载大量数据时候可以暂时不用refresh和repliccas
index.refresh_interval to -1 and index.number_of_replicas to 0
禁用swapping
禁用swapping
给文件缓存分配内存
缓存是用来缓存I/O操作的,至少用一般的内存来运行ES文件缓存。
使用更快的硬件
使用SSD作为存储设备。
使用本地存储,避免使用NFS或者SMB
注意使用虚拟存储,比如亚马逊的EBS
索引缓冲大小
indices.memory.index_buffer_size通常是JVM的0.1,确保他足够处理至多512MB的索引。
调整搜索速度
给文件系统缓存大内存
至少给可用内存的一半到文件系统缓存。
使用更快的硬件
使用SSD作为存储设备。
使用性能更好的CPU,高并发
使用本地存储,避免使用NFS或者SMB
注意使用虚拟存储,比如亚马逊的EBS
文档建模
避免链接,嵌套会使查询慢几倍,而亲自关系能使查询慢几百倍,所以如果同样的问题可以通过没有链接的非规范回答就可以提升速度。
预索引数据
不明觉厉
映射
数值型数据不一定要映射成整形或者长整型
避免scripts
如果实在要使用,就用painless和expressions
强势合并只读索引
https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-forcemerge.html
不要强势合并正在写的索引
准备全局顺序
准备文件系统缓存
index.store.preload,如果内存不是很大会使搜索变得缓慢。
调整磁盘使用
禁用不需要的功能
不需要过滤时可以禁用索引“index”:false
如果你不需要text字段的score,可以禁用”norms”:false
如果不需要短语查询可以不索引positions"indexe_options":"freqs"
不用默认的动态字符串匹配
不要使用_all
使用best_compression
使用最小的足够用的数值类型
byte,short,integer,long
half_float,float,double
https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-create-index.html#mappings
https://www.elastic.co/guide/en/elasticsearch/reference/master/index-modules.html#dynamic-index-settings
https://www.elastic.co/guide/en/elasticsearch/reference/master/search-request-scroll.html
分享到:
相关推荐
### ElasticSearch性能优化策略 ElasticSearch是一种广泛应用于日志分析、全文检索、实时数据分析等场景的搜索引擎。随着数据量的增大与业务复杂度的提高,如何高效地使用ElasticSearch变得尤为重要。本文将详细...
### Elasticsearch性能优化详解 #### 一、硬件选择与磁盘I/O优化 Elasticsearch的基础构建于Lucene之上,所有索引及文档数据均存储在本地磁盘中。磁盘性能直接影响Elasticsearch的性能表现,尤其是在高负载情况下...
官方提供的测试数据集是检验Elasticsearch功能、性能和稳定性的关键资源,可以帮助开发者和用户深入了解其工作原理和优化技巧。 ### 一、Elasticsearch核心概念 1. **文档(Document)**:Elasticsearch处理的基本...
Elasticsearch 6.x系列相较于5.x版本有了显著的改进和增强,尤其是在性能优化和安全性方面。具体到6.2.2版本,它不仅继承了6.x系列的优势,还针对早期版本的一些已知问题进行了修复,提高了系统的稳定性和可靠性。...
【Elasticsearch 性能优化】 Elasticsearch (ES) 是一个流行的开源全文搜索引擎,用于高效存储和检索大量数据。为了实现最佳性能,我们需要对多个层面进行调优,包括集群规划、Linux 系统参数配置、JVM 参数设置...
1. 内存优化:Elasticsearch 建议使用系统内存的50%作为堆内存,但最大不超过32GB。在JVM参数中设置 `-Xmx` 和 `-Xms` 分别为8GB,这确保了JVM启动时分配的最小和最大堆内存一致,避免了动态调整带来的性能波动。...
虽然理论上可以在同一台服务器上启动多个 Node,但这会增加资源争抢的可能性,不利于性能优化。 - 对于大规模部署,建议单独配置 Master 节点和数据汇聚节点。例如,在拥有 100 个节点的集群中,可以配备 3 个专门...
Elasticsearch 8.14.1版本可能会引入新的特性和改进,例如性能优化、查询性能提升、新API的添加等。为了充分利用这些特性,了解官方发布的更新日志和升级指南至关重要。 总的来说,Elasticsearch是一个强大且灵活的...
以上是对给定文件中的关键配置项进行了详细解释,这些配置项对于优化 Elasticsearch 的性能和稳定性至关重要。通过合理配置这些选项,可以有效提升 Elasticsearch 的运行效率和集群管理的便利性。
Elasticsearch是一个高性能的全文搜索引擎,优化其性能对于提升系统的整体效率至关重要。 首先,我们关注内存优化。Elasticsearch建议分配系统内存的50%作为JVM堆内存,但不超过32GB。这意味着对于一个拥有128GB...
Elasticsearch的每个新版本都会带来性能优化、功能增强和问题修复。8.1.2版本可能包含了以下改进: 1. **性能提升**:通过优化内部算法和数据结构,提高了搜索、索引和查询的速度。 2. **稳定性增强**:修复了可能...
Elasticsearch支持实时更新文档,但建议采用幂等性更新策略以避免并发问题。 `_update` API允许部分更新文档,而无需读取、修改再写入整个文档。 四、索引管理 索引模板(Template)用于预先定义索引设置和映射...
由于这是一个免安装版本,所以在开始使用前,建议先熟悉Elasticsearch 的配置文件 `config/elasticsearch.yml`,根据需求调整相关设置,如内存分配、网络绑定、索引策略等。 总的来说,Elasticsearch 2.4.4 免安装...
- 确保系统满足 Elasticsearch 的硬件要求,包括足够的内存(建议至少 2GB 用于开发环境,生产环境需更多)、足够的磁盘空间以及合适的处理器配置。 2. **Java 运行环境**: - Elasticsearch 基于 Java 运行,...
它不是Elasticsearch官方提供的,而是由第三方开发的社区插件。 4. **安装流程**: - **下载**:首先,需要从可靠的源(如GitHub仓库)下载head插件的压缩包。 - **解压**:将下载的压缩文件解压到本地文件夹。 ...
- 从官方渠道下载"elasticsearch-7.10.0-windows-x86_64.zip",解压到你选择的目录。 - 确保你的系统满足运行Elasticsearch的最低要求,包括内存、硬盘空间和处理器性能。 2. **环境变量配置**: - 将Elastic...
首先,版本号7.17.6代表了Elasticsearch的特定更新迭代,通常包含了错误修复、性能优化以及新功能的添加。每个版本的更新都会在官方文档中详细记录,以便用户了解改进之处。 1. **64位系统支持**: "x86_64" 表示这...
首先,Elasticsearch 7.12.1是该软件的一个稳定版本,包含了众多性能优化和新特性。例如,它可能改进了搜索速度,增强了数据处理能力,同时修复了一些已知的问题,确保系统的稳定性。这个版本还可能引入了新的API,...
2. **获取插件**:将提供的压缩包解压到一个合适的位置,通常建议放在Elasticsearch的plugins目录下。 3. **执行安装命令**:打开命令行,定位到Elasticsearch的bin目录,然后执行以下命令安装插件: ``` ./...