【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>>
Elastic Search的结构概念:集群,节点,分片,备份。 关系数据库 ⇒ 数据库 ⇒ 表 ⇒ 行 ⇒ 列(Columns) Elasticsearch ⇒ 索引 ⇒ 类型 ⇒ 文档 ⇒ 字段(Fields) 1.Elastic Search 所有的 filed都加索引,倒排索引。 FST 以字节方式存储所有的term, 这种压缩方式可以有效的缩减存储空间,使得term index 足以放进内存,但是这种方式也会导致查找的时候需要更多地CPU资源。 post list的压缩技巧:bitmap为基础,使用Roaring bitmaps进行进一步压缩,将posting list按照65535为界限分块,比如第一块所包含的文档id范围在0~65535之间,第二块的id范围是65536~131071,以此类推。再用<商,余数>的组合表示每一组id,这样每组里的id范围都在0~65535内了,剩下的就好办了,既然每组id不会变得无限大,那么我们就可以通过最有效的方式对这里的id存储。 2.联合索引 使用跳表的数据结构快速做“与”运算,或者利用bitmap按位进行“与”
3.Elastic Search检索这么快: 1.索引,2.压缩机制【bitmap -> Roaring Bitmap】,3.将磁盘中的东西尽量搬到内存,减少磁盘随机读取次数(同时利用磁盘顺序读特性)。
来源:oschina
链接:https://my.oschina.net/u/2870118/blog/3143706