ES 中的空间使用

本贴最后更新于 2785 天前,其中的信息可能已经事过境迁

背景

ES 的磁盘占用是比较高的,因为做了一系列的查询优化

空间使用

  1. 显示原始信息,有 "_source": {"enabled": true}
  2. 建立索引,有 "index": "not_analyzed"
  3. 索引使用了 doc_value,有 "doc_values": true
  4. _all 字段:把所有其它字段中的值,以空格为分隔符组成一个大字符串,然后被分析和索引,但是不存储,即能被查询,但不能被取回显示

经过这些默认的查询优化,会造成存储空间的冗余。

优化方案

去掉或者压缩_source

去掉_source

官方文档, 中文文档, 中文文档对照版

关闭 _source

{ "yourtype":{ "_source":{ "enabled":false }, "properties": { ... } } }

存储指定字段到 _source

{ "yourtype":{ "_source":{ "includes":["field1","field2"] }, "properties": { ... } } }
{ "yourtype":{ "_source":{ "excludes":["field1","field2"] }, "properties": { ... } } }

压缩_source

index.codec:best_compression,
compress:true

去掉索引

启用索引

{ "test": { "_source": { "enabled": false }, "properties": { "title": { "type": "string", "index": "not_analyzed", "store": "true" }, "content": { "type": "string" } } } }

禁用索引

默认 store 即为 false,为禁用索引状态.

去掉 doc_value

禁用_all 字段

细节见官方文档,以及中文文档.

方法一,完全禁用:

在模板中设置

{ "mappings": { "type_1": { "properties": {...} }, "type_2": { "_all": { "enabled": false }, "properties": {...} } } }
  • type_1 中的_all 字段是 enabled
  • type_2 中的_all 字段是 disabled

方法二,排除无用字段

PUT my_index { "mappings": { "my_type": { "properties": { "title": { "type": "string" } "content": { "type": "string" }, "date": { "type": "date", "include_in_all": false }, "memo": { "type": "string", "index": "no", "store": true } } } }

也适用于 nested 字段

{ "mappings": { "my_type": { "include_in_all": false, "properties": { "title": { "type": "string" }, "author": { "include_in_all": true, "properties": { "first_name": { "type": "string" }, "last_name": { "type": "string" } } }, "editor": { "properties": { "first_name": { "type": "string" }, "last_name": { "type": "string", "include_in_all": true } } } } } } }

进一步阅读

  • Elasticsearch

    Elasticsearch 是一个基于 Lucene 的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于 RESTful 接口。Elasticsearch 是用 Java 开发的,并作为 Apache 许可条款下的开放源码发布,是当前流行的企业级搜索引擎。设计用于云计算中,能够达到实时搜索,稳定,可靠,快速,安装使用方便。

    117 引用 • 99 回帖 • 206 关注
  • Java

    Java 是一种可以撰写跨平台应用软件的面向对象的程序设计语言,是由 Sun Microsystems 公司于 1995 年 5 月推出的。Java 技术具有卓越的通用性、高效性、平台移植性和安全性。

    3195 引用 • 8215 回帖

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...