ElasticSearch磁盘率使用调优

#关闭你不需要使用的特性

默认情况下ES会为大多数字段进行索引并且添加doc,这样能够在查询和聚合的时候更快,例如你有一个数值型的字段叫做foo,你需要用这个字段来做柱状图,但是你不会使用它进行过滤,你可以关闭掉这个字段的索引

PUT index
{
  "mappings": {
    "type": {
      "properties": {
        "foo": {
          "type": "integer",
          "index": false
        }
      }
    }
  }
}

文本字段存储了一些辅助信息来让文档能够被评分,假如你不需要评分的功能,可以关掉它

PUT index
{
  "mappings": {
    "type": {
      "properties": {
        "foo": {
          "type": "text",
          "norms": false
        }
      }
    }
  }
}

文本字段还存储了词频和短语的位置信息,假如你不需要执行短语查询,也可以让ES不存位置信息

PUT index
{
  "mappings": {
    "type": {
      "properties": {
        "foo": {
          "type": "text",
          "index_options": "freqs"
        }
      }
    }
  }
}

又或者你根本就不关心评分,你可以让ES只是匹配索引的term,这样的话短语查询的出错率会变高,评分也会假设每个词条在每个文档上只出现了一次

PUT index
{
  "mappings": {
    "type": {
      "properties": {
        "foo": {
          "type": "text",
          "norms": false,
          "index_options": "freqs"
        }
      }
    }
  }
}

#不要使用默认的动态模板建立索引

keyword就是完全匹配的,text是分词类型的,话说这个东西在6.0就会被移除了,ES真是完全就不考虑向下兼容么。。。

默认的动态字符串模板会把字符串的文本和关键字都索引起来,假如你只需要其中一个的话,这就有点浪费。例如id只需要索引为keyword,而文本内容只需要被存成text字段 这个选项可以在模板里面操作或者在索引配置里面操作

PUT index
{
  "mappings": {
    "type": {
      "dynamic_templates": [
        {
          "strings": {
            "match_mapping_type": "string",
            "mapping": {
              "type": "keyword"
            }
          }
        }
      ]
    }
  }
}

#禁用_all _all字段存储了文档的所有信息,假如你不需要一次搜素所有的字段,禁用掉它

#使用 best_compression 选项 使用这个选项能使得索引得到更加有效的压缩

#使用最小的数值类型 根据实际使用情况,整形就存在整形类型上,比较小的float就使用scaled_float或者更小的话就使用half_float,这都能有效的节省存储

转载于:https://my.oschina.net/xiaomaijiang/blog/830174

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值