Elasticsearch 5.0 磁盘空间节省策略的认识

前言:本文是当时QQ群员讨论磁盘空间如何优化,我搜了下类似的文章,结合官方文档做了一些总结
如果你有疑问,可以联系我参与讨论,或者去原文查看。
NOTE: 磁盘空间节省问题,是得失问题。要省出磁盘空间,必会影响某些功能,如果被影响的功能你不需要,你可以采用相应的磁盘节省策略。
TIP: 磁盘空间节省需要谨慎,一定要看清楚策略的影响。
一、影响因素
replication
副本的产生是为了高可用,作为数据的备份,在某些节点挂掉后,保障数据不丢失。从原则上来说,副本数据和数据本身并无区别。因此副本数量,将会成倍数地扩大索引的大小
修改副本大小的命令:
curl -XPUT 'localhost:9200/my_index/_settings' -d '
{
"index" : {
"number_of_replicas" : 0
}
}'
默认副本数为1,早期版本2.3支持在elasticsearch.yml中添加index.number_of_replicas: 0这种形式来修改。5.0版本中不在支持在elasticsearch.yml中修改 index settings 层面的配置
影响: 副本设置为0,虽然会节省一半的磁盘空间,es集群不再高可用,节点一挂,数据就丢。
_source
Elasticsearch保留每个传入文档的原始数据JSON的副本。这个_source字段在我们重新结构化原始数据、高亮搜索结果非常有用。但是也占了磁盘空间。可以被disable掉以节省磁盘空间
注意这个原始数据json的副本和上文的replication是两码事,是下文{ }中的内容
PUT my_index/user/1
{
"first_name": "John",
"last_name": "Smith",
"date_of_birth": "1970-10-24"
}
影响:你可以查看我单独写的_source字段认识和影响
单个字段也可以选择是否store,也会影响磁盘空间。我认为单个字段store和_source是个体和整体的关系,所以我写在一个段落里面?我此处存疑
_all
_all字段维护这一个大字符串数组,包含了所有的term。方便我们在不知道field的情况下,也能搜索出term value。大字符串数组也会占用磁盘空间,也是可以被disable掉的
影响: 你可以查看我单独写的_all字段认识和影响
doc_value
doc values是elasticsearch为了减小 heap memory 使用率采用的一种机制。在排序和聚合时能节省heap,但它本身会占用磁盘空间影响:你可以查看我单独写的doc_value认识和影响
分词
影响:对字符串进行分词也会对磁盘空间产生影响,一般情况下不分词会节省空间
二、影响程度
本章节的数据来源于参考文章2
测试数据为一个67644119 byte log file
71.212.224.97 - - [28/May/2014:16:27:35 -0500] "GET /images/web/2009/banner.png
HTTP/1.1" 200 52315 "http://www.semicomplete.com/projects/xdotool/"
"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_2) AppleWebKit/537.36
(KHTML, like Gecko) Chrome/32.0.1700.107 Safari/537.36"
测试数据大小为67644119
| test number | string field | _all | doc value | index size | Expansion ratio (index size / raw size) |
|---|---|---|---|---|---|
| 0 | x | x | x | 67644119 | 1 |
| 1 | analyzed and not_analyzed | enabled | enabled | 94633818 | 1.399 |
| 2 | analyzed and not_analyzed | disabled | enabled | 75648416 | 1.118 |
| 3 | not_analyzed | disabled | enabled | 63079805 | 0.933 |
| 4 | analyzed and not_analyzed | enabled | disabled | 80608354 | 1.192 |
| 5 | analyzed and not_analyzed | disabled | disabled | 61680474 | 0.912 |
| 3 | not_analyzed | disabled | disabled | 48432487 | 0.716 |
Elasticsearch 5.0 磁盘空间节省策略的认识的更多相关文章
- CPI 3.0磁盘空间不足!
当使用Cisco PI的时候,有的时候可能出现diskspace不够的情况,这种情况可能是前期部署PI的时候,提供的空间太小了,或者目前缓存的数据太多了. 如下是一个例子: 在CLI中检查时,PI数据 ...
- Jenkins遇到问题二:Jenkins服务器磁盘空间管理策略
Jenkins在帮助我们自动化构建服务的同时也在消耗服务器的磁盘空间,试想如果构建的项目个数很多,而Jenkins 服务器磁盘空间又不是非常大的话,每隔一段时间磁盘空间就会爆满导致Jenkins出现磁 ...
- 【神经网络与深度学习】caffe静态链接库“Unknown layer type: Convolution (known types: )”和“ 磁盘空间不足”问题的解决办法
这一段时间把caffe在windows环境下编译了一下,tool里面的cpp全部编译成了exe.再用的时候有两个问题让我头疼了好长时间! 第一个问题 "db_lmdb.hpp:14] Che ...
- 增加VirtualBox虚拟机的磁盘空间大小(Host:Win7 VirtualBox5.0.16 VM:Win10)
1 前言 网上关于增加VirtualBox虚拟机的磁盘空间大小的文章非常非常多,这里我之所以再写一篇,是因为在参照这些文章做的时候,由于VirtualBox的版本更新以及其他一些环境问题,碰到到一些问 ...
- Java API获取topic所占磁盘空间(Kafka 1.0.0)
很多用户都有这样的需求:实时监控某个topic各分区在broker上所占的磁盘空间大小总和.Kafka并没有提供直接的脚本工具用于统计这些数据. 如果依然要实现这个需求,一种方法是通过监控JMX指标得 ...
- 给VMware下的Linux扩容磁盘空间到根分区(以centos7.0为例)
一.扩展VMWare硬盘空间 关闭Vmware 的 Linux系统,这样,才能在VMWare菜单中设置: VM -> Settings... -> Hardware -> Hard ...
- virtual box 6.0 扩容原有磁盘空间 ubuntu18.04
virtual box 6.0 扩容原有磁盘空间 ubuntu18.04 1虚拟介质管理 1.1点击菜单 1.2 修改磁罗容量大小(需要关闭虚拟机),点击应用 2使用ubuntu安装镜像将新加容量添加 ...
- C++问题--Reis连接redisContext *pRedisContext = redisConnectWithTimeout("127.0.0.1", 6379, tv);pRedisContext->errstr返回错误磁盘空间不足
一.问题 使用C++连接Redis的时候出错,错误String为磁盘空间不足,连接代码如下: //reids默认监听端口6387 ; struct timeval tv; tv.tv_sec = iT ...
- Elasticsearch 5.0 _source field的简单认识
前言:本文的目的是为后续磁盘空间利用优化做铺垫,主要知识点来源于官网 一._source是什么 _source field是我们在PUT数据时候的json body: PUT store_index/ ...
随机推荐
- 怎样以学习单片机为契机,逐步成为优秀的project师
现状 不知道阅读本文的读者,在初学单片机时是否和我以前一样迷茫.看到各种新的术语,疑惑不解:不知道从何学起:照着书中的样例一步一步做都没有问题,可是自己试着做东西,遇到各种问题却不会解决,向别人提问, ...
- DynamicResource与StaticResource的区别
原文:DynamicResource与StaticResource的区别 2008-06-20 12:16:12 静态资源在第一次编译后即确定其对象或值,之后不能对其进行修改.动态资源则是在运行时决定 ...
- JavaScript等比例缩放图片
js等比例缩放图片,这个功能非常实用,当网页加载一个尺寸比较大的图片时,往往会把一个网页撑的变形,页面变得很难看,于是我们就想到了用JS去控制超出一定范围的图片,以稳定页面布局,本代码段就是完成了此功 ...
- c语言算法题目求职用
1.栈的压入与压出/* 输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否为该栈的弹出顺序.n<=100000 用一个栈作辅助,顺序描述压入序列和弹出序列,如果当前位置上压入序列 ...
- c# 即使服务又是可执行程序的代码实现
先看下代码 namespace UpdaterServer { class Program { static void Main(string[] args) { ) { ServiceBase[] ...
- JavaScript插件——模态框
Bootstrap3.0学习第十七轮(JavaScript插件——模态框) 前言 阅读之前您也可以到Bootstrap3.0入门学习系列导航中进行查看http://www.cnblogs.com/ ...
- ubuntu 12.04 安装和使用花生壳
1.安装必要的开发包 [root@localhost ~]# apt-get install gcc g++ autoconf automake 2.下载phddns到某一个目录 http://www ...
- Event对象的事件句柄
<html> <!-- onresize 事件会在窗口或框架被调整大小时发生 --> <!--onresize="alert('窗口的大小得到变化就会执行我') ...
- 使用Jquery+EasyUI进行框架项目开发案例讲解之一---员工管理源码分享
使用Jquery+EasyUI进行框架项目开发案例讲解之一---员工管理源码分享 使用Jquery+EasyUI 进行框架项目开发案例讲解之一 员工管理源码分享 在开始讲解之前,我们先来看一下什 ...
- IOS学习之路(代码实现自动布局)
1.将一个试图放置在其父视图的中央位置,使用限制条件. 2.创建两个限制条件:一个是将目标视图的 center.x 位置排列在其父视图的 center.x 位置,并且另外一个是将目标视图的 cente ...