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

前言:本文是当时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
原文地址:https://www.cnblogs.com/yangwenbo214/p/6277728.html