然后 container 内具体的存储结构要根据存入其内数据的基数来决定 。
基数小于 2 ^ 12 次方即 4096时,使用unsigned short类型的有序数组来存储,最大消耗空间就是 8 KB 。
基数大于 4096 时,则使用大小为 2 ^ 16 次方的普通 bitset 来存储,固定消耗 8 KB 。当然,有些时候也会对 bitset 进行行程长度编码(RLE)压缩,进一步减少空间占用 。
ElasticSearch 就是使用 Roaring Bitmap 来缓存不同条件查询出来的 posting list,然后再进行与操作计算出最终结果集 。
后记
至此,我们也算了解了 ElasticSearch 为什么比 MySQL 更适合复杂条件查询,但是有好就有弊,因为为了查询做了这么多的准备工作,ElasticSearch 的插入速度就会慢于 MySQL,而且数据存入ES后并不是立马就能检索到 。
作者丨历小冰
来源丨公众号:程序员历小冰(ID:gh_a1d0b50d8f0a)
关注公众号【dbaplus社群】,获取更多原创技术文章和精选工具下载
【在复杂条件搜索上,为什么MySQL只能被ES吊打?】
推荐阅读
- 值得现在就去尝试的四款开源聊天应用软件
- SpringBoot事件监听:应用监听接口的使用
- 不爱跳槽的程序员集中在8-17k,揭晓中国开发者的真实现状
- 2020年佳士得拍卖预展 佳士得在线艺术品拍卖
- 十大科学未解之谜 科学家有三大未解之谜
- 电影热带雨林历险记 热带雨林历险电影
- 黑洞互相吞噬 黑洞会吞噬太阳吗
- 微信正在用的深度学习框架开源!支持稀疏张量,基于C++开发
- windows域软件下发策略
- 三角龙的化石是在哪里发现的 真正的恐龙蛋化石图片
