es使用场景
京东、淘宝等电商搜索:
-
搜索手机壳
-
能够搜索到手机壳、手机等商品数据
-
搜索到内容还有高亮显示
-
还能搜索到手机相关的品牌数据等
-
上述的功能使用MySQL这种关系型数据库不能能够实现
什么是es
1.全文检索的高性能的服务器;
2.能够实现在海量数据中快速检索到满足条件的数据,同时还可以实现分页、高亮显示等功能
3.Kibana数据的可视化,提供了图形可视化界面,可以操作es;
4.lucene:ES底层是基于lucene来实现的;
es相当于mybatis,lucene相当于jdbc;
5.ES在搜索实时数据的性能要强于Solr
es对比mysql
1.mysql中的table-----》Elasticsearch中的index,文档的集合
2.mysql中的row-------》Elasticsearch中的document,文档内容都是json格式
3.mysql中的column------》Elasticsearch中的field,json文档中的字段
4.mysql中的schema-------》Elasticsearch中的mapping,索引中文档的约束,例如字段类型约束
5.mysql中的sql-------》Elasticsearch中的dsl,提供json风格的请求语句,实现crud
倒排索引
1.正向索引:先通过文件名找到具体的文件,再获取文件中的内容过程 mysql的查询功能就是正向索引的思想
2.从文件的内容查找,得到包含这些内容的文件列表,再得到文件对应的信息;
3.过程:
3.1、将文档的内容通过算法进行分词,得到一个词条列表
3.2、将词条列表当作key,包含该词条的文档id列表作为值,形成一张表
3.3、对用户输入内容进行分词,得到词条
3.4、拿着词条在倒排索引中查找,可以得到包含词条的文档id
3.4、拿着文档id到正向索引中查找具体文档