一、ES中的倒排索引
先把文档内容进行分词,形成词条与文档ID的对应关系,叫做词条库,词条具备唯一性,建立索引
# 也就是通过特定的关键词与储存相关数据文档的id形成对应关系,形成一个与表形式相似的词条库;
如下图: 例如某个词条库的关键词为“手机”,则该词条库对应的数据文档id为 小米手机(id = 1) 和 华为手机(id = 2) 若某个词条库的关键词为“小米”,则该词条库对应的数据文档id为 小米手机(id = 1) 和 华为小米手机充电器(id = 3) 、 小米手环(id = 4)
该对应规则类似数据库的模糊查询 ('% name %')
词条库和文档id的对应格式如下:
文档id与相关数据对应的格式如下:
分好对应的词条库之和,再通过对传入的搜索信息进行特定的分词规则进行分词,
再将所获取到的分词内容与词条库中匹配,去获取对存放应数据文档id,找到对应的文档信息。
例如:当搜索输入内容为(小米 手机),首先将其分为 小米 和 手机,再利用小米、手机两个搜索的关键词去匹配词条库中的关键词,获取对应存放信息的文档id,找到对应的文档信息。
二、ES相关概念对比MySQL
MySQL | Elasticsearch | 说明 |
---|---|---|
Table | Index | 索引(index),就是文档的集合,类似数据库的表(table) |
Row | Document | 文档(Document),就是一条条的数据,类似数据库中的行(Row),文档都是JSON格式 |
Column | Field | 字段(Field),就是JSON文档中的字段,类似数据库中的列(Column) |
Schema | Mapping | Mapping(映射)是索引中文档的约束,例如字段类型约束。类似数据库的表结构(Schema) |