tencent cloud

Elasticsearch Service

新手指引
动态与公告
产品动态
产品公告
安全公告
产品简介
产品概述
Elasticsearch 版本支持说明
产品功能
高级特性(X-Pack)
产品优势
应用场景
能力与限制说明
相关概念
购买指南
计费概述
产品定价
ES Serverless 服务定价
欠费说明
ES 内核增强
内核版本发布记录
定向路由优化
压缩算法优化
FST Off Heap 内存优化
快速入门
集群规格和容量配置评估
创建集群
访问集群
ES Serverless 服务指南
服务概述
基本概念
5分钟快速体验
快速使用
访问控制
数据写入
数据查询
索引管理
告警管理
ES API 参考
相关问题
数据应用指南
数据应用概述
数据管理
ES 集群指南
集群管理
访问控制
集群多可用区部署
集群扩缩容
集群配置
插件配置
监控与告警
日志查询
数据备份
升级
实践教程
数据迁移和同步
应用场景构建
索引设置
SQL 支持
企业微信机器人接收 Watcher 告警
API 文档
History
Introduction
API Category
Instance APIs
Making API Requests
Data Types
Error Codes
常见问题
产品相关问题
ES 集群
词汇表
新版介绍
Elasticsearch Service 2020.07新版
Elasticsearch Service 2020.2新版
Elasticsearch Service 2019.12新版

压缩算法优化

PDF
聚焦模式
字号
最后更新时间: 2021-09-24 17:22:57

背景

Lucene 当前针对 Document Fields 数据的存储,支持两种压缩算法:
LZ4
Deflate
LZ4 具有更快的压缩与解压速度,而 Deflate 在压缩率上更占优势。两者在性能与压缩率上存在明显的差异,基于现有的压缩算法,用户不能很好的兼容压缩比和性能,Lucene 默认的压缩算法是 LZ4。

优化方案

整合业内先进的压缩算法 Zstandard(ZSTD),提升压缩率的同时,性能损耗小。

Zstandard 压缩算法的优势

Zstandard 压缩算法可以说兼顾了 LZ4 与 Deflate 两者的优点:在性能上与 LZ4 相当(针对日志数据的测试中,发现 Zstandard 算法比 LZ4 略优),而压缩率略弱于 Deflate。
如下是关于三种压缩算法的对比测试结果:
压缩算法
加载时间(1 Shard)
加载时间(5 Shards)
Fields(*fdt)文件大小
索引总大小
LZ4
1143769ms
420447ms
4.15 GB
6.3 GB
Deflate
1270408ms
448738ms
2.56 GB
4.7 GB
Zstandard(16K Chunk)
1109414ms
415256ms
2.93 GB
5.1 GB
Zstandard(32K Chunk)
1088959ms
406661ms
2.67 GB
4.8 GB
注意:
1. 测试数据:基于某典型日志应用类数据。
2. 测试方法:基于 Elasticsearch Rest High Level Client API。

使用方式

基于 Rest High Level Client API

在创建 Index 时,为 CreateIndexRequest 添加"index.codec"配置项,value 设置为"zstandard":
CreateIndexRequest createRequest = new CreateIndexRequest(indexName);
createRequest.settings(Settings.builder()
.put("index.number_of_shards", shards)
.put("index.number_of_replicas", replicas)
.put("index.codec", "zstandard")
);

基于 HTTP 请求

类似的,也在 settings 中添加"index.codec"配置项,并将 value 设置为"zstandard":
PUT /newIndex
{
"settings": {
"index.codec": "zstandard",
"index.number_of_shards": 1
}
}

优化效果

ZSTD 行存压缩率相较 LZ4 提升35%,性能和 LZ4 相当。

支持版本

6.8.2、7.5.1、7.10.1。

帮助和支持

本页内容是否解决了您的问题?

填写满意度调查问卷,共创更好文档体验。

文档反馈