Elasticsearch
一、倒排索引
俩个关键概念
- 文档:每一条数据就是文档,每一个文档有对应的id。
- 词条:文档按照一定的规则分成的词语,用于搜索匹配。
步骤:
- 根据文档内容进行分词,会形成一个词条(词条唯一,会建立索引)与文档的对应关系,叫做词条库。
- 对搜索的内容也会进行分词,然后得到词条去和词条库进行匹配,可以快速根据词条索引得到对应的文档ID。
- 根据得到的文档ID再去获得文档的消息。
上操作的每次搜索都是有索引的,所以搜索速度会很快,解决了原来sql模糊搜索不能使用索引只能全盘搜索,效率低的问题。
二、ES与MySql的对比
| MySql | ES | 说明 |
|---|---|---|
| Table(表) | Index | 相同类型的文档的集合 |
| Row(行) | Document | 一条条的数据,类似于数据库中的行(Row),文档都是JSON格式 |
| Column(字段) | Field | 字段,JSON文档中的字段(前面的key),类似与数据库中的Column名字 |
| Schema(表结构) | Mapping | 索引中的文档约束,类似于数据库中的表结构。 |
| SQL(语句) | DSL | DSL是ES提供的JSON风格的请求语句,用来定义搜索条件。 |