一、ElasticSearch基本概念
Elastucsearch是基于Lucene的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基 于RESTful web接口。Elasticsearch是用Java语言开发的,并作为Apache许可条款下的开放源码发布, 是一种流行的企业级搜索引擎。Elasticsearch用于云计算中,能够达到实时搜索,稳定,可靠,快速, 安装使用方便。官方客户端在Java、.NET(C#)、PHP、Python、Apache Groovy、Ruby和许多其他 语言中都是可用的。根据DB-Engines的排名显示,Elasticsearch是最受欢迎的企业搜索引擎,其次是 Apache Solr,也是基于Lucene 演示:京东,淘宝 。
Lucene是一个Java语言的搜索引擎类库,是Apache公司的顶级项目,由DougCutting于1999年研发。
重要特性:
- 分布式的实时文件存储,每个字段都被索引并可被搜索
- 实时分析的分布式搜索引擎
- 可以扩展到上百台服务器,处理PB及结构或非结构化数据
二、倒排索引
倒排索引的概念是基于MySql这样的正向索引而言。
1.正向索引
正向索引是最传统的,根据id索引的方式。但根据词条查询时,必须先逐条获取每个文档,然后判断文档中是否包含所需要的词条,是根据文档找词条的过程。
如果根据·id查询,直接走索引,查询速度非常快
| Id | title |
| 1 | IPhone16promax |
| 2 | IWatch |
| 3 | IPhone16promax充电器 |
基于title做模糊查询,只能是逐行扫描,历程如下:
- 用户搜索数据,条件是title符合"%手机%"
- 逐行获取数据,比如是id为1的数据
- 判断数据中的title是否符合用户的搜索条件
- 如果符合则放入结果集,不符合则丢弃。回到步骤1
逐行扫描,也就是全表扫描,随着数据量的增加,其查询效率也会越来越低。当数量达到数百万时,就是一场灾难。
2. 倒排索引
- 文档(Document):用来搜素的数据,其中的每一条数据是一个文档。如:一个网页、一个商品信息。
- 词条(Term):

最低0.47元/天 解锁文章
866

被折叠的 条评论
为什么被折叠?



