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/ ...
随机推荐
- 安装Windows2003操作系统 - 初学者系列 - 学习者系列文章
Windows 2003是一款经典的服务器操作系统.以前笔者工作的时候就是用的这款操作系统来进行编程的.下面就对该操作系统的安装进行介绍(部分步骤参见XP的安装http://www.cnblogs.c ...
- JavaScript后台代码操作HTML TABLE的方法
原文:JavaScript后台代码操作HTML TABLE的方法 var rowNum = 0,fileNum = 0; //行号与列号 var oNewRow; //定义插入行对象 var oNew ...
- iscroll4实现轮播图效果
相信很多人和我一样,在使用iscroll的是时候只知道可以手动滑动,不知道iscroll的轮播怎么实现一下就是我做的一个轮播效果,亲测有效: 1.html,当然可以动态添加下面的小圆点 <div ...
- javascript 学习总结(四)Date对象
1.Date.now() //Date.now() is in ECMAScript 5 //Prior to that, use +new Date() //获取当前时间 var now = (ty ...
- Asp.Net MVC页面静态化功能实现一:利用IHttpModule,摒弃ResultFilter
上一篇有提到利用IHttpModule和ResultFilter实现页面静态化功能.后来经过一些改动,将ResultFilter中要实现的功能全部转移到IHttpModule中来实现 Asp.Net ...
- BT是如何下载的
BT协议简介 一.BT下载是怎么来的? 在互联网上下载文件的方式大概有这么几种:FTP.HTTP.BT.eMule(电驴)等, 浏览器会直接支持FTP和HTTP下载,BT和eMule下载一般需要专用的 ...
- Day2:T4求逆序对(树状数组+归并排序)
T4: 求逆序对 A[I]为前缀和 推导 (A[J]-A[I])/(J-I)>=M A[j]-A[I]>=M(J-I) A[J]-M*J>=A[I]-M*I 设B[]=A[]-M*( ...
- TDD单元测试驱动
使用IdleTest进行TDD单元测试驱动开发演练(2) [前言] 1. 有关上篇请参见<使用IdleTest进行TDD单元测试驱动开发演练(1)>,有关本篇用到Entity Fram ...
- office文件的预览
使用FlexPaper实现office文件的预览(C#版) 需求很简单,用户上传office文件(word.excel.ppt)后,可以预览上传的这些文件.搜索的相关的资料后.整理如下: Step1. ...
- IOS使用 Visual Format Language 定义水平和垂直约束
定义限制条件来改变一个 UI 组件在其父视图的水平和垂直方向布局的方法. 可以使用方程式里 H:方向符号代表水平方向的边距,使用 V:方向符号代表垂直方向的边 距. 转载请注明,本文转自:http:/ ...