Clickhouse & Elasticsearch 选型对比

Clickhouse&Elasticsearch介绍

Clickhouse是俄罗斯搜索巨头Yandex开发的完全列式存储计算的分析型数据库。ClickHouse在这两年的OLAP领域中一直非常热门,国内互联网大厂都有大规模使用。Elasticsearch是一个近实时的分布式搜索分析引擎,它的底层存储完全构建在Lucene之上。简单来说是通过扩展Lucene的单机搜索能力,使其具有分布式的搜索和分析能力。

今天很多用户在实际的业务场景中,常常面对ClickHouse和Elasticsearch技术选型的难题。本文将通过功能对比和性能测试的手段对比两者的优劣之处并进行选型,同时会附上一份覆盖多场景的测试报作为参考。

Clickhouse vs Elasticsearch

|------|-----------|-----------------------|----------------------------------------|
| 类别 || Elasticsearch | Clickhouse |
| 导入方式 | MQ导入 | 内置支持kafka, 插件插件plusar | 内置支持 kafka, 插件支持plusar |
| 导入方式 | JDBC导入 | 内置支持 | 内置支持 |
| 导入方式 | 用户导入 | Rest API | HTTP接口/JDBC |
| 存储架构 | 数据分区 | 时间分区,字段分区 | 支持多个分区字段 |
| 存储架构 | 数据分桶 | 支持主键Hash分桶 | 支持分片 |
| 存储架构 | 多副本 | 支持多副本设置 | 支持副本表 |
| 存储架构 | 字段类型 | 结构化 半结构化(Array、Map) | 结构化 半结构化(Array、Map) |
| 存储架构 | 压缩 | LZ4,Deflate | LZ4,ZSTD |
| 存储架构 | 存储引擎 | 行/列/倒排索引 | 行存/稀疏索引 |
| 存储架构 | 存储压缩比 | 一般 | 高 |
| 计算能力 | 向量化计算 | 不支持 | 支持 |
| 计算能力 | 并发能力 | < ~100 | < ~100 |
| 计算能力 | 写入性能 | 3000/s | 3.5w/s |
| 计算能力 | 谓词下推 | 弱 | 一般 |
| 计算能力 | JOIN | 不支持 | 支持BroadCast Join 支持预hash的Colocate JOIN |
| 计算能力 | 物化视图(预计算) | 不支持 | 支持 |
| 计算能力 | 自定义函数 | 不支持 | 支持 |
| 计算能力 | 全文搜索 | 支持 | 不支持 |
| 扩展性 | 协议 | JDBC/ODBC/RESTAPI协议 | JDBC/ODBC/HTTP协议 |
| 扩展性 | SQL协议 | DSL为主,SQL兼容性差 | 兼容标准SQL协议 |
| 扩展性 | 动态列 | 支持 | 不支持 |
| 扩展性 | 存储分离 | 不支持 | 不支持 |
| 扩展性 | 数据备份 | 支持快照,定时备份 | 第三方工具开 |
| 扩展性 | 扩缩容 | 需要Reblance数据 | 需要Reblance数据 |

ClickHouse与ES的对比优缺点

优点:

  • ClickHouse写入吞吐量大,单服务器日志写入量在50MB到200MB/s,每秒写入超过60w记录数,是ES的5倍以上。
  • clickhouse的计算框架,支持向量化引擎,以及自低向上的极致算法层面优化,在OLAP场景下可以最大限度的压榨CPU IO等性能,对比ES存在明显优势。
  • clickhouse支持雾化视图和语句算功能,对于固定的统计分析场景可以将耗时从十几秒下降到几十毫秒级别级别
  • ClickHouse比ES服务器成本更低。一方面ClickHouse的数据压缩比比ES高(行列存储索引的存在),相同数据占用的磁盘空间只有ES的1/3~1/30,节省了磁盘空间的同时,也能有效的减少磁盘IO;另一方面ClickHouse比ES占用更少的内存,更高效的利用CPU资源。
  • 相比ES,ClickHouse稳定性更高,运维成本更低。ES中不同的Group负载不均衡,有的Group负载高,会导致写Rejected等问题,需要人工迁移索引;在ClickHouse中通过集群和Shard策略,采用轮询写的方法,可以让数据比较均衡的分布到所有节点。
  • ES中一个大查询可能导致OOM的问题;ClickHouse通过预设的查询限制,会查询失败,不影响整体的稳定性。
  • ClickHouse采用SQL语法,比ES的DSL更加简单,新用户学习成本更低。

缺点:

  • 由于是列式数据库,且只支持稀疏索引(bloom fliter),不具备倒排索引功能,无法像ES一样提供同样的全文检索能力。
  • 无法动态添加字段,需要提前定义好表schema。
相关推荐
倒流时光三十年14 分钟前
SpringBoot 数据库同步 Elasticsearch 性能优化
数据库·spring boot·elasticsearch
lili-felicity43 分钟前
CANN异步推理实战:从Stream管理到流水线优化
大数据·人工智能
2501_933670791 小时前
2026 高职大数据专业考什么证书对就业有帮助?
大数据
xiaobaibai1531 小时前
营销自动化终极形态:AdAgent 自主闭环工作流全解析
大数据·人工智能·自动化
星辰_mya1 小时前
Elasticsearch更新了分词器之后
大数据·elasticsearch·搜索引擎
xiaobaibai1532 小时前
决策引擎深度拆解:AdAgent 用 CoT+RL 实现营销自主化决策
大数据·人工智能
悟纤2 小时前
学习与专注音乐流派 (Study & Focus Music):AI 音乐创作终极指南 | Suno高级篇 | 第33篇
大数据·人工智能·深度学习·学习·suno·suno api
ESBK20252 小时前
第四届移动互联网、云计算与信息安全国际会议(MICCIS 2026)二轮征稿启动,诚邀全球学者共赴学术盛宴
大数据·网络·物联网·网络安全·云计算·密码学·信息与通信
Elastic 中国社区官方博客2 小时前
Elasticsearch:Workflows 介绍 - 9.3
大数据·数据库·人工智能·elasticsearch·ai·全文检索
B站_计算机毕业设计之家2 小时前
豆瓣电影推荐系统 | Python Django Echarts构建个性化影视推荐平台 大数据 毕业设计源码 (建议收藏)✅
大数据·python·机器学习·django·毕业设计·echarts·推荐算法