什么是ES
Elasticsearch是一个基于Lucene的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基 于RESTful web接口。能够达到实时搜索,稳定,可靠,快速, 安装使用方便。
重要特性:
1、分布式的实时文件存储,每个字段都被索引并可被搜索
2、实时分析的分布式搜索引擎
3、可以扩展到上百台服务器,处理PB级结构化或非结构化数据
正向索引和到倒排索引
正向索引:
根据id索引查询的方式。但根据词条查询时,必须先逐条获取每个文档,然后判 断文档中是否包含所需要的词条,是根据文档找词条的过程。
优点: 可以给多个字段创建索引 根据索引字段搜索、排序速度非常快
缺点: 根据非索引字段,或者索引字段中的部分词条查找时,只能全表扫描。
倒排索引:
是先找到用户要搜索的词条,根据词条得到保护词条的文档的id,然后根据id 获取文档。是根据词条找文档的过程。
优点: 根据词条搜索、模糊搜索时,速度非常快
缺点: 只能给词条创建索引,而不是字段 无法根据字段做排序
mysql与elasticsearch
MySQL | Elasticsearch | 说明 |
---|---|---|
Table | Index | 索引(index),就是文档的集合,类似数据库的表(table) |
Row | Document | 文档(Document),就是一条条的数据,类似数据库中的行 (Row),文档都是JSON格式 |
Column | Field | 字段(Field),就是JSON文档中的字段,类似数据库中的列 (Column) |
Schema | Mapping | Mapping(映射)是索引中文档的约束,例如字段类型约束。类 似数据库的表结构(Schema) |
SQL | DSL | DSL是elasticsearch提供的JSON风格的请求语句,用来操作 elasticsearch,实现CRUD |
总结:
Mysql:擅长事务类型操作,可以确保数据的安全和一致性
Elasticsearch:擅长海量数据的搜索、分析、计算