共计 2692 个字符,预计需要花费 7 分钟才能阅读完成。
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
Linux 上安装部署 ElasticSearch 全程记录 http://www.linuxidc.com/Linux/2015-09/123241.htm
Elasticsearch 安装使用教程 http://www.linuxidc.com/Linux/2015-02/113615.htm
ElasticSearch 配置文件译文解析 http://www.linuxidc.com/Linux/2015-02/114244.htm
ElasticSearch 集群搭建实例 http://www.linuxidc.com/Linux/2015-02/114243.htm
分布式搜索 ElasticSearch 单机与服务器环境搭建 http://www.linuxidc.com/Linux/2012-05/60787.htm
ElasticSearch 的工作机制 http://www.linuxidc.com/Linux/2014-11/109922.htm
Elasticsearch 的安装,运行和基本配置 http://www.linuxidc.com/Linux/2016-07/133057.htm
使用 Elasticsearch + Logstash + Kibana 搭建日志集中分析平台实践 http://www.linuxidc.com/Linux/2015-12/126587.htm
Ubuntu 14.04 搭建 ELK 日志分析系统(Elasticsearch+Logstash+Kibana) http://www.linuxidc.com/Linux/2016-06/132618.htm
Elasticsearch1.7 升级到 2.3 实践总结 http://www.linuxidc.com/Linux/2016-11/137282.htm
Ubuntu 14.04 中 Elasticsearch 集群配置 http://www.linuxidc.com/Linux/2017-01/139460.htm
Elasticsearch-5.0.0 移植到 Ubuntu 16.04 http://www.linuxidc.com/Linux/2017-01/139505.htm
ElasticSearch 的详细介绍:请点这里
ElasticSearch 的下载地址:请点这里
本文永久更新链接地址:http://www.linuxidc.com/Linux/2017-01/139948.htm