文章目录

  • 禁用不需要的特性
  • 禁用doc values
  • 不要使用默认的动态字符串映射
  • 观察分片大小
  • 禁用_source
  • 使用best_compression
  • Force Merge
  • Shink Index
  • 数值类型长度够用就好
  • 使用索引排序来排列类似的文档
  • 在文档中以相同的顺序放置字段

禁用不需要的特性

默认情况下,ES为大多数的字段建立索引,并添加到doc_values,以便使之可以被搜索和聚合。例如以下几种情况:

  1. 如不需要在某个字段上过滤,则可以不索引该字段;
  2. 如只需要在文本字段上进行匹配,而不关心生成的得分,则可以配置ES不将norms写入索引;
  3. 如不需要运行短语查询,则可以不索引位置;

禁用doc values

所有支持doc value的字段都默认启用了doc value。如果确定不需要对字段进行排序或聚合,或者从脚本访问字段值,则可以禁用doc value以节省磁盘空间。

不要使用默认的动态字符串映射

默认的动态字符串映射会把字符串类型的字段同时索引为text和keyword。如果只需要其中之一,则显然是一种浪费。通常,id字段只需要作为keyword类型进行索引,而body字段只需作为text类型进行索引。

要禁用默认的动态字符串映射,则可以显式地指定字段类型,或者在动态模板中指定将字符串映射为text或keyword。

观察分片大小

较大的分片可以更有效地存储数据。为了增加分片大小,可以在创建索引的时候设置较少的主分片数量,或者使用shrink API来修改现有索引的主分片数量。但是较大的分片也有缺点,例如,较长的索引恢复时间。

禁用_source

_source字段存储文档的原始内容。如果不需要访问它,则可以将其禁用。但是,这样需要访问_source的API将无法使用。

使用best_compression

_source和设置为"store": true的字段占用磁盘空间都比较多。默认情况下,它们都是被压缩存储的。默认的压缩算法为LZ4,可以通过使用best_compression来执行压缩比更高的算法:DEFLATE。但这会占用更多的CPU资源。

Force Merge

一个ES索引由若干分片组成,一个分片有若干Lucene分段,较大的Lucene分段可以更有效地存储数据。使用_forcemerge API来对分段执行合并操作,通常,我们将分段合并为一个单个的分段:max_num_segments=1。

Shink Index

Shrink API允许减少索引的分片数量,结合上面的Force Merge API,可以显著减少索引的分片和Lucene分段数量。

数值类型长度够用就好

为数值类型选择的字段类型也可能会对磁盘使用空间产生较大影响,整形可以选择byte、short、integer或long,浮点型可以选择scaled_float、float、double、half_float,每个数据类型的字节长度是不同的,为业务选择够用的最小数据类型,可以节省磁盘空间。

使用索引排序来排列类似的文档

当ES存储_source时,它同时压缩多个文档以提高整体压缩比。例如,文档共享相同的字段名,或者它们共享一些字段值,特别是在具有低基数或zipfian分布的字段上。

默认情况下,文档按照添加到索引中的顺序压缩在一起。如果启用了索引排序,那么它们将按排序顺序压缩。对具有相似结构、字段和值的文档进行排序可以提高压缩比。

在文档中以相同的顺序放置字段

由于多个文档被压缩成块,如果字段总是以相同的顺序出现,那么在这些_source文档中可以找到更长的重复字符串的可能性更大。

Elasticsearch磁盘使用量优化相关推荐

  1. 《Elasticsearch 源码解析与优化实战》第20章:磁盘使用量优化

    文章目录 一.简介 1.1.元数据字段 1.2.索引映射参数 二.优化措施 2.1.禁用对你来说不需要的特性 2.2.禁用doc_values 2.3.不要使用默认的动态字符串映射 2.4.观察分片大 ...

  2. Elasticsearch 检索性能优化实战指南

    1.当我们在说 Elasticsearch 检索性能优化的时候,实际在说什么?! 检索响应慢! 并发检索用户多时,响应时间不达标 卡死了! 怎么还没有出结果? 怎么这么慢? 为啥竞品产品的很快就返回结 ...

  3. 【Elasticsearch】es Elasticsearch 聚合性能优化六大猛招

    1.概述 参考:Elasticsearch 聚合性能优化六大猛招

  4. linux 磁盘参数优化: barrier

    磁盘参数优化:  barrier { mount /dev/db1 -o barrier=0  /data mount /dev/vdb2 -o barrier=0 /data linux 查看挂载参 ...

  5. Linux下监控磁盘使用量并在超过阀值后自动发送报警邮件

    参考博客:http://www.heminjie.com/system/linux/1923.html 最近Linux服务器磁盘使用量经常到100%,直到影响到正常服务出现故障才会去注意,做不到防患于 ...

  6. 【Linux运维命令】如何查看磁盘使用量?

    作为开发人员,偶尔会遇到线上环境磁盘使用量达到告警阈值或直接写满的情况.这里就会用到如何查看磁盘使用量的命令--[df]命令.df是"Disk Free"的缩写,用于查看文件系统磁 ...

  7. mysql SQL命令查看Mysql数据库磁盘使用量

    – 1. 查询所有数据总的磁盘使用量: select concat(round(sum(data_length/1024/1024),2),'MB') as data from information ...

  8. 查看所有虚拟机磁盘使用量以及 CPU 使用量信息

    查看所有虚拟机磁盘使用量以及 CPU 使用量信息 #!/bin/bash virt-df read -n1 "按任意键继续" key virt-top

  9. 查看Elasticsearch磁盘使用率

    1 需求 需要查看Elasticsearch磁盘使用率,方便扩容,数据迁移 2 命令 http://127.0.0.1:9012/_cat/allocation?v&pretty

最新文章

  1. 微信小应用,又一大神,音乐播放器
  2. part.write java_小白向:web中利用request.getPart()上传文件到服务器
  3. OutOfMemoryError:解决方案反模式
  4. 雨尘SEO静态页面生成系统版本源码3秒钟可生成上千条单页面SEO必备神器
  5. 【BZOJ3226】【codevs2297】校门外的区间,线段树
  6. android auto note 8,三星Galaxy Note 8.0支持flash吗
  7. 区块链酒廊BTC Lounge正式启动运营
  8. Django学习笔记二
  9. Go语言学习笔记(四)结构体struct 接口Interface 反射reflect
  10. 你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。
  11. Java操作DB2 XML数据实践
  12. hive字段名、注释中文显示问号
  13. Spring-Boot开发者工具:自动重启、LiveReload、远程开发
  14. 实现xml和json接口(第一篇)
  15. 数据可视化专属配色方案
  16. html -----硬回车和软回车
  17. Intellij IDEA 提示 Cannot access com... 解决办法
  18. ELI'S CURIOUS MIND
  19. Java Excel 复制单元格 poi Excel 复制单元格 Java Excel 复制行 Java Excel 复制 sheet 页 poi excel copy
  20. Clustering coefficient的计算

热门文章

  1. 阿里巴巴“高并发秒杀”系统架构到底多牛逼?看完这篇够你吹一年
  2. 7月15日,值得纪念的日子
  3. doxygen 命令_doxygen使用总结
  4. IIS日志文件存在哪里?Windows服务器IIS日志存放位置 及 查看方法
  5. 计算机关机时间文件夹,设置电脑关机同时自动清理文件夹方法
  6. 马里奥大逃亡html5 制作,玩家用HTML5打造《马里奥大陆》
  7. C语言设圆半径r=1.5,圆柱高h=3,求圆周长、圆面积、圆球表面积、圆球体积、圆柱体积。用scanf输人数据,输出计算结果,输出时要求有文字说明,取小数点后2位数字。
  8. amqp协议java_AMQP协议介绍
  9. GNSS/INS 组合导航(一):定位技术分类与介绍
  10. UART Baudrate