ElasticSearch相关知识点
1.了解ES
ES的作用:ES是一款非常强大的开源搜索引擎,具备非常多强大功能,可以帮助我们从海量数据中快速找到需要的内容
ELK技术栈:ES结合kibana、Logstash、Beasts,也就是 elastic stack 。被广泛应用在日志数据分析、实时监控等领域。
ES与lucene:
为什么不用lucene?因为这个是个类库,还需要写很多API。
ES的实时更新很强大相较于Solr。
2.学习倒排索引
倒排索引的概念是基于 MySQL 这样的正向索引而言的
正向索引
如果是根据 id 查询,查询速度非常快
但如果是基于 title 做模糊查询,只能是逐行扫描数据,流程如下:
逐行扫描,也就是全表扫描,随着数据量增加,其查询效率也会越来越低。。
倒排索引
文档(Document):用来搜索的数据,其中的每一条数据就是一个文档。例如一个网页、一个商品信息。
词条(Term):对文档数据或用户搜索数据,利用某种算法分词,得到的具备含义的词语就是词条,例如"我是中国人",就可以分为:我、是、中国人、中国、国人,这样的几个词条
倒排索引的搜索流程如下(以搜索"华为手机"为例):
如图:
正向和倒排
- 正向索引是最传统的,根据id索引的方式,但根据词条查询时,必须先逐条查询获取每个文档,然后判断文档中国是否包含所需要的词条,是根据文档找词条的过程。
- 倒排索引则相反,是先找到用户要搜索的词条,根据词条得到包含词条的文档id,然后再根据id获取文档,是根据词条找文档的过程。
一些概念
结合使用:
使用消息中间件进行一个异步通知,数据同步。