阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

ElasticSearch性能优化官方建议

152次阅读
没有评论

共计 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

正文完
星哥说事-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-01-21发表,共计2692字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中