知识点 1 :倒排索引入门
正排索引:文档id到文档内容和单词之间的关联(类比图书目录页)
倒排索引:从文档单词到文档 ID 的过程(类比图书尾部索引页)
倒排索引核心组成包括两个部分
1、单词词典:记录所有文档单词,记录单词到倒排列表的关联关系
2、倒排列表:记录单词与对应文档结合,由倒排索引项组成
• 倒排索引项由:文档ID、词频 TF、位置(Position)、偏移(Offset)组成
词频 TF:单词在文档中出现的次数,用于相关性评分
位置:单词在文档中的位置,用于语句搜索
Offset 记录单词 <起始位,结束位> 实现高亮显示等
关于es三本书的倒排索引实例:
Elasticsearch 的 JSON 文档中,每个字段都有自己的倒排索引
通过 Mapping 字段可以指定某些字段不做索引
• 优点:节省存储空间
• 缺点:字段无法被搜索
知识点 2 :Elasticsearch对比传统关系型数据库
1 、Elasticsearch中的概念与关系型数据库对比。
在Elasticsearch中,文档归属于一种 类型(type) ,而这些类型存在于 索引(index)中,类比传统关系型数据库:
Relational DB -> Databases -> Tables -> Rows -> Columns
关系型数据库 数据库 表 行 列
Elasticsearch -> Indices -> Types -> Documents -> Fields
Elasticsearch 索引 类型 文档 域(字段)
2、Elasticsearch
Elasticsearch没有典型意义的事务.
Elasticsearch是一种面向文档的数据库。
Elasticsearch没有提供授权和认证特性
3、传统数据库为特定列增加一个索引,例如B-Tree索引来加速检索。Elasticsearch和Lucene使用一种叫做倒排索引(inverted index)的数据结构来达到相同目的。
倒排索引源于实际应用中需要根据属性的值来查找记录。这种索引表中的每一项都包括一个属性值和具有该属性值的各记录的地址。由于不是由记录来确定属性值,而是由属性值来确定记录的位置,因而称为倒排索引(inverted index)。
4、在Elasticsearch中,所有的字段缺省都建了索引。 也就是说每一个字段都有一个倒排索引,用于快速查询。
5、es支持http协议(json格式)(9200端口)、thrift、servlet、memcached、zeroMQ等的传输协议(通过插件方式集成)。传统关系型数据库不支持。
6、es支持分片和复制,从而方便水平分割和扩展,复制保证了es的高可用与高吞吐。