一、初识ES
Elasticsearch为一款高性能分布式搜索引擎。
ES之所以有如此高性能的搜索表现,正是得益于底层的倒排索引技术。
正向索引是最传统的,根据id索引的方式。但根据词条查询时,必须先逐条获取每个文档,然后判断文档中是否包含所需要的词条,是根据文档找词条的过程。
而倒排索引则相反,是先找到用户要搜索的词条,根据词条得到保护词条的文档的id,然后根据id获取文档。是根据词条找文档的过程。
MYSQL采用正向索引,可以给多个字段创建索引,根据索引字段搜索、排序速度非常快。但是根据非索引字段,或者索引字段的部分词条扫描时,只能全表扫描。
而ES根据词条搜索、模糊搜索时,速度非常快。但只能给词条做索引,而不是字段,也没法根据字段做排序。
下表为MYSQL与ES的对应关系:
MYSQL与ES各有千秋,Mysql:擅长事务类型操作,可以确保数据的安全和一致性,Elasticsearch:擅长海量数据的搜索、分析、计算;两者通常结合使用,对安全性能较高的写操作使用mysql实现,对查询性能要求较高的搜索需求时,使用elasticsearch实现,两者基于某种方式(4种方式,常利用binlog实现实时同步)