
目录
Elasticsearch介绍_Elasticsearch的出现
Elasticsearch介绍_Elasticsearch应用场景
Elasticsearch介绍_Elasticsearch对比Solr
Elasticsearch介绍_Elasticsearch数据结构
Elasticsearch介绍_全文检索

Elasticsearch是一个全文检索服务器
全文检索是一种非结构化数据的搜索方式
- 结构化数据:指具有固定格式固定长度的数据,如数据库中的字段。
- 非结构化数据:指格式和长度不固定的数据,如电商网站的商品详情。


结构化数据一般存入数据库,使用sql语句即可快速查询。但由于非结构化数据的数据量大且格式不固定,我们需要采用全文检索的方式进行搜索。全文检索通过建立倒排索引加快搜索效率。
实时学习反馈
1. 什么是非结构化数据?
A 格式和长度固定的数据
B 格式和长度不固定的数据
C 格式固定的数据
D 长度固定的数据
2. 全文检索是
A 一种非结构化数据的搜索方式
B 一种结构化数据的搜索方式
C 一种非结构化数据的保存方式
D 一种结构化数据的保存方式
Elasticsearch介绍_倒排索引

索引
将数据中的一部分信息提取出来,重新组织成一定的数据结构,我 们可以根据该结构进行快速搜索,这样的结构称之为索引。 索引即目录,例如字典会将字的拼音提取出来做成目录,通过目录 即可快速找到字的位置。 索引分为正排索引 和倒排索引。
正排索引(正向索引)
将文档id建立为索引,通过id快速可以快速查找数据。如数据库中 的主键就会创建正排索引。

倒排索引(反向索引)
非结构化数据中我们往往会根据关键词查询数据。此时我们将数据中的关键词建立为索引,指向文档数据,这样的索引称为倒排索引。

创建倒排索引流程:

实时学习反馈
1. 索引分为
A 正排索引和无序索引
B 正排索引和倒排索引
C 无序索引和有序索引
D 有序索引和倒排索引
2. 将数据中的关键词建立为索引,指向文档数据,这样的索引称为
A 无序索引
B 有序索引
C 正排索引
D 倒排索引
Elasticsearch介绍_Elasticsearch的出现

多年前,一个刚结婚的名叫Shay的失业开发者,跟着妻子去了伦敦,他的妻子在那里学习厨师。Shay使用全文检索工具------ lucene,给他的妻子做一个食谱搜索引擎。

但Lucene的操作非常复杂,且Lucene是一个单机软件,不支持联网访问。因此 Shay基于Lucene开发了开源项目 Elasticsearch。 Elasticsearch本质是一个java语言开发的web项目,我们可以通过 RESTful风格的接口访问该项目内部的Lucene,从而让全文搜索变得简单。

从此以后,Elasticsearch成为了Github上最活跃的项目之一, Elastic公司围绕Elasticsearch提供商业服务,并开发新的特性。 Elasticsearch将永远开源并对所有人可用。
实时学习反馈
1. Elasticsearch本质是一个
A python语言开发的web项目
B javascript语言开发的web项目
C java语言开发的web项目
D java语言开发的普通项目
Elasticsearch介绍_Elasticsearch应用场景

1、2013年初,GitHub抛弃了Solr,采取Elasticsearch来做PB级的搜索。GitHub使用Elasticsearch搜 索20TB 的数据,包括13亿文件和1300亿行代码。
2、维基百科:以Elasticsearch为基础的核心搜索架构。
3、百度:百度目前广泛使用Elasticsearch作为文本数据分析,采集百度所有服务器上的各类指标数据 及用户自定义数据。目前覆盖百度内部20多个业务线(包括casio、云分析、网盟、预测、文库、 直达号、钱包、风控等),单集群最大100台机器,200个ES节点,每天导入30TB+数据
4、新浪使用ES分析处理32亿条实时日志。
5、阿里使用ES构建自己的日志采集和分析体系。
6、我们可以使用Elasticsearch实现全站搜索,线上商城系统的搜索,分析日志等功能。
实时学习反馈
1. 我们可以使用Elasticsearch实现功能
A 全站搜索
B 线上商城系统的搜索
C 分析日志
D 以上都可以
Elasticsearch介绍_Elasticsearch对比Solr

Solr也是基于Lucene的一款全文搜索引擎,下面是他们的对比。
Solr利用Zookeeper进行分布式管理,而Elasticsearch自身带有分布式协调管理功能;
Solr支持更多格式的数据,而Elasticsearch仅支持json文件格式;
Solr官方提供的功能更多,而Elasticsearch本身更注重于核心功能,高级功能多由第三方插件提 供;
Solr在传统的搜索应用中表现好于Elasticsearch,但在处理实时搜索应用时效率明显低于 Elasticsearch。
目前Elasticsearch的市场占有率越来越高,Spring从2020年起也已 经停止Spring Data Solr的维护,更多的公司使用Elasticsearch作为 搜索引擎。
实时学习反馈
1. 关于Solr和Elasticsearch的对比,以下说法正确的是
A Elasticsearch利用Zookeeper进行分布式管理
B Solr仅支持json文件格式
C Elasticsearch自身带有分布式协调管理功能
D Elasticsearch在传统的搜索应用中表现好于Solr
Elasticsearch介绍_Elasticsearch数据结构

文档(Document):文档是可被查询的最小数据单元,一个 Document 就是一条数据。类似于关系型数据库中的记录的概念。
类型(Type):具有一组共同字段的文档定义成一个类型,类似于 关系型数据库中的数据表的概念。
索引(Index):索引是多种类型文档的集合,类似于关系型数据库 中的库的概念。
域(Fied):文档由多个域组成,类似于关系型数据库中的字段的 概念。
Elasticsearch跟关系型数据库中概念的对比:

注:ES7.X之后删除了type的概念,一个索引不会代表一个库, 而是代表一张表。我们课程中使用ES7.17,所以目前的ES中概 念对比为:

实时学习反馈
1. 在Elasticsearch中,是可被查询的最小数据单元
A 文档
B 类型
C 索引
D 域
2. 在Elasticsearch7之后,一个索引类似于关系型数据库中的
A 一个库
B 一张表
C 一个对象
D 一个字段