多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
# 磁盘使用调优 原文链接 : [https://www.elastic.co/guide/en/elasticsearch/reference/5.3/tune-for-disk-usage.html](https://www.elastic.co/guide/en/elasticsearch/reference/5.3/tune-for-disk-usage.html) 译文链接 : [磁盘使用调优](/pages/viewpage.action?pageId=9405601) 贡献者 : @李坚,[ApacheCN](/display/~apachecn),[Apache中文网](/display/~apachechina) ## 禁用不需要的功能 默认情况下,_elasticsearch _索引并且新增数据到大多数的字段中,以便于它们能够被索引和聚合。比如,你有一个叫 _foo_ 的数字 _field(字段)_,你想要一个 _histograms__(直方图)_ 但是不需要过滤,那么就可以在 _mappings(映射)_ 中禁用这用这个 _field(字段)_的索引。 ``` PUT index { "mappings": { "type": { "properties": { "foo": { "type": "integer", "index": false } } } } } ``` _text field(文本字段)_在索引中规范化的存储是为了对 _documents_ 进行评分。如果你只想要 text field(文本字段)的匹配功能,不关心生成的分数,可以在 elasticsearch中配置中成不向索引编写规范: ``` PUT index { "mappings": { "type": { "properties": { "foo": { "type": "text", "norms": false } } } } } ``` _text field(文本字段)_ 默认情况下还存储了在索引的频率和位置,频率用于计算得分,而位置用于短语查询;如果不需要进行短语查询,你可以告诉 _elasticsearch _不索引位置: ``` PUT index { "mappings": { "type": { "properties": { "foo": { "type": "text", "index_options": "freqs" } } } } } ``` 此外,如果你不关心得分,可以配置 _elasticsearch _ 只索引匹配到的 _documents_  (文档)。这个字段仍然可以被搜索,但是短语查询的时候会报错并且得分将假设每个 _documents_  (文档)中只出现一次。 ``` PUT index { "mappings": { "type": { "properties": { "foo": { "type": "text", "norms": false, "index_options": "freqs" } } } } } ``` ## 不要使用默认的动态字符串映射 默认的 _dynamic string mappings (动态字符串映射)_将以 _text(文本)_和 _keywords(关键字)_的形式对字符串字段进行索引。如果你只需要使用它们中的一种,这么做是浪费的。通常 _id field(id 字段)_只需要被当成 _keywords(关键字)_来索引,而 _body field(字段)_只需要被当成 _text(文本) field(字段)_来索引。 禁用 _dynamic string mappings (动态字符串映射)_方法有:明确 _string fields(字符串字段)_的 _mapping(映射)_或者为 _text(文本)_和 _keywords(关键字)_映射的字符串字段设置动态 _templates(模版) 。_ 例如,这是一个将字符串字段映射为 _keywords(关键字)_ 的模版: ``` PUT index { "mappings": { "type": { "dynamic_templates": [ { "strings": { "match_mapping_type": "string", "mapping": { "type": "keyword" } } } ] } } } ``` ## 禁用 __all_ __all field(字段)_ 将会索引所有字段中的所有值,这将会很大的空间。如果你不需要同时搜索所有字段,可以禁用 __all field(字段)_。 ## 使用 _best_compression_ _source 和 存储的字段将会占用很大的存储空间。可以使用 _best_compression  codec(编解码器)_ 进行有效的压缩。 ## 使用最合适的最小数字类型 您为数字数据选择的类型可能会对磁盘使用量产生重大影响。特别地,整数应该使用整数类型(_byte, short, integer or long_)(字节,短整数或长整数)存储,并且浮点应该被存储在 _scaling_float_ 中,如果合适的话也可以存储在符合用例的最小类型中:使用 _float over double_ 或 浮点数的 _half_float_ 将有助于节省存储空间。