Elasticsearch性能优化官方建议
来源:互联网 发布:ccs软件最新软件 编辑:程序博客网 时间:2024/05/17 20:31
原文地址:http://www.cnblogs.com/cutd/p/5800795.html
如何提高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和replicas
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的索引。
调整搜索速度
给文件系统缓存大内存
避免链接,嵌套会使查询慢几倍,而亲子关系能使查询慢几百倍,所以如果同样的问题可以通过没有链接的非规范回答就可以提升速度。
预索引数据
不明觉厉
映射
数值型数据不一定要映射成整形或者长整型
避免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
- Elasticsearch性能优化官方建议
- Elasticsearch 优化建议
- ListView性能优化(官方建议Making ListView Scrolling Smooth)
- Elasticsearch写入性能优化
- ElasticSearch性能优化方案
- ElasticSearch性能优化策略
- ElasticSearch性能优化
- Elasticsearch写入性能优化
- Elasticsearch写入性能优化
- Elasticsearch写入性能优化
- Linux性能优化建议
- Linux性能优化建议
- jvm性能优化建议
- PHP性能优化建议
- mysql性能优化建议
- MySQL性能优化建议
- jQuery性能优化建议
- 代码性能优化建议
- 禁止网页复制
- 网页禁止剪切事件
- 对象拖动事件
- map 遍历key 与 value
- Window prompt()方法
- Elasticsearch性能优化官方建议
- Git 遇到了 early EOF index-pack failed 问题
- 使用jsencrypt实现参数的前端加密
- Window open() 方法
- linux常用命令
- VIM 常用配置
- Window close() 方法
- python的map,filter,reduce函数
- Window moveTo() 方法