前言:本文是当时QQ群员讨论磁盘空间如何优化,我搜了下类似的文章,结合官方文档做了一些总结

参考文章1

参考文章2

如果你有疑问,可以联系我参与讨论,或者去原文查看。

NOTE: 磁盘空间节省问题,是得失问题。要省出磁盘空间,必会影响某些功能,如果被影响的功能你不需要,你可以采用相应的磁盘节省策略。

TIP: 磁盘空间节省需要谨慎,一定要看清楚策略的影响。

一、影响因素

  1. 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集群不再高可用,节点一挂,数据就丢。

  2. _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是个体和整体的关系,所以我写在一个段落里面?我此处存疑

    单个字段store

  3. _all

    _all字段维护这一个大字符串数组,包含了所有的term。方便我们在不知道field的情况下,也能搜索出term value。大字符串数组也会占用磁盘空间,也是可以被disable掉的

    影响: 你可以查看我单独写的_all字段认识和影响

  4. doc_value

    doc values是elasticsearch为了减小 heap memory 使用率采用的一种机制。在排序和聚合时能节省heap,但它本身会占用磁盘空间

    影响:你可以查看我单独写的doc_value认识和影响

  5. 分词

    影响:对字符串进行分词也会对磁盘空间产生影响,一般情况下不分词会节省空间

    官网分词器介绍

二、影响程度

本章节的数据来源于参考文章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 磁盘空间节省策略的认识的更多相关文章

  1. CPI 3.0磁盘空间不足!

    当使用Cisco PI的时候,有的时候可能出现diskspace不够的情况,这种情况可能是前期部署PI的时候,提供的空间太小了,或者目前缓存的数据太多了. 如下是一个例子: 在CLI中检查时,PI数据 ...

  2. Jenkins遇到问题二:Jenkins服务器磁盘空间管理策略

    Jenkins在帮助我们自动化构建服务的同时也在消耗服务器的磁盘空间,试想如果构建的项目个数很多,而Jenkins 服务器磁盘空间又不是非常大的话,每隔一段时间磁盘空间就会爆满导致Jenkins出现磁 ...

  3. 【神经网络与深度学习】caffe静态链接库“Unknown layer type: Convolution (known types: )”和“ 磁盘空间不足”问题的解决办法

    这一段时间把caffe在windows环境下编译了一下,tool里面的cpp全部编译成了exe.再用的时候有两个问题让我头疼了好长时间! 第一个问题 "db_lmdb.hpp:14] Che ...

  4. 增加VirtualBox虚拟机的磁盘空间大小(Host:Win7 VirtualBox5.0.16 VM:Win10)

    1 前言 网上关于增加VirtualBox虚拟机的磁盘空间大小的文章非常非常多,这里我之所以再写一篇,是因为在参照这些文章做的时候,由于VirtualBox的版本更新以及其他一些环境问题,碰到到一些问 ...

  5. Java API获取topic所占磁盘空间(Kafka 1.0.0)

    很多用户都有这样的需求:实时监控某个topic各分区在broker上所占的磁盘空间大小总和.Kafka并没有提供直接的脚本工具用于统计这些数据. 如果依然要实现这个需求,一种方法是通过监控JMX指标得 ...

  6. 给VMware下的Linux扩容磁盘空间到根分区(以centos7.0为例)

    一.扩展VMWare硬盘空间 关闭Vmware 的 Linux系统,这样,才能在VMWare菜单中设置: VM -> Settings... -> Hardware -> Hard ...

  7. virtual box 6.0 扩容原有磁盘空间 ubuntu18.04

    virtual box 6.0 扩容原有磁盘空间 ubuntu18.04 1虚拟介质管理 1.1点击菜单 1.2 修改磁罗容量大小(需要关闭虚拟机),点击应用 2使用ubuntu安装镜像将新加容量添加 ...

  8. 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 ...

  9. Elasticsearch 5.0 _source field的简单认识

    前言:本文的目的是为后续磁盘空间利用优化做铺垫,主要知识点来源于官网 一._source是什么 _source field是我们在PUT数据时候的json body: PUT store_index/ ...

随机推荐

  1. 重构 ORM 中的 Sql 生成

    Rafy 领域实体框架设计 - 重构 ORM 中的 Sql 生成   前言 Rafy 领域实体框架作为一个使用领域驱动设计作为指导思想的开发框架,必然要处理领域实体到数据库表之间的映射,即包含了 OR ...

  2. REDGATE又一好用的脚本工具

    REDGATE又一好用的脚本工具   REDGATE又一好用的脚本工具 先说明一下:这个工具是免费的 下载地址:http://www.red-gate.com/products/dba/sql-scr ...

  3. 够快网盘支持与iOS-ASIHTTPRequest框架学习

    够快网盘支持与iOS-ASIHTTPRequest框架学习 前段时间在公司的产品中支持了够快网盘,用于云盘存储. 在这个过程中,学习到了很多新的知识,也遇到了很多问题,在此记录一下. 首先就够快的AP ...

  4. c#中如何跨线程调用windows窗体控件

    c#中如何跨线程调用windows窗体控件?   我们在做winform应用的时候,大部分情况下都会碰到使用多线程控制界面上控件信息的问题.然而我们并不能用传统方法来做这个问题,下面我将详细的介绍.首 ...

  5. JavaScript插件——弹出框

    (JavaScript插件——弹出框) 前言 阅读之前您也可以到Bootstrap3.0入门学习系列导航中进行查看http://www.cnblogs.com/aehyok/p/3404867.htm ...

  6. Dump Checking

    Dump Checking Debug相关的一些小技巧 摘要: 1. 如何Debug一个进程的子进程? 答: 使用WinDBG attach到父进程, 然后输入命令".childdbg 1& ...

  7. NuGet的本地服务器安装与Package的发布

    NuGet的本地服务器安装与Package的发布 主要的步骤是按照下面的例子来做的: NuGet学习笔记(1)——初识NuGet及快速安装使用 NuGet学习笔记(2)——使用图形化界面打包自己的类库 ...

  8. DOM处理

    DOM处理 这几天整理了一下思路,本来觉得DOM部分会有很多东西,但是忽然发现频繁使用的其实并不太多 class class处理部分主要有四个 hasClass:检查元素是否包含某个class add ...

  9. 字符串匹配算法 -- Rabin-Karp 算法

    字符串匹配算法 -- Rabin-Karp 算法 参考资料 1 算法导论 2 lalor 3 记忆碎片 Rabin-karp 算法简介 在实际应用中,Rabin-Karp 算法对字符串匹配问题能较好的 ...

  10. CYQ.Data 支持WPF相关的数据控件绑定.Net获取iis版本

    CYQ.Data 支持WPF相关的数据控件绑定(2013-08-09) 事件的结果 经过多天的思考及忙碌的开发及测试,CYQ.Data 终于在UI上全面支持WPF,至此,CYQ.Data 已经可以方便 ...