1:什么是ElasticSearch
ElasticSearch(弹性搜索),简称ES。
ES是一个分布式,RESTFul风格的搜索和数据分析引擎,能够解决不断涌现出的各种用例。作为 Elastic Stack(Elastic技术栈简称ELK) 的核心,Elasticsearch 会集中存储您的数据,让您飞快完成搜索,微调相关性,进行强大的分析,并轻松缩放规模。
我们可以知道ES有三个特点:
1:分布式(非常方便实现集群部署)
2:RESTFul风格(使用RESTFul进行搜索)
3:搜索引擎(用于数据分析,首先数据得在ES中才行)
2:为什么要使用ElasticSearch
ES主要用来数据搜索和数据分析,这里有读者问不是有数据库吗?比如mysql的,ES和关系型数据库的分工是什么?我们下边举例说明
2.1:为什么不使用mysql
举例1:首先我们那熟悉的关系型数据mysql来举例。我们查找关系型数据库的商品表、数据量很大的时候,这里只是几条简单的数据和表用来举例,实际情况远远比这里复杂。
当我们要查找title="手机"、 "小米充电器"、 "华为" 等等字段的时候,势必要用到模糊查询
select * from order where title like "%目标字段%" ,这就很难使用到索引,即使我们在title字段上创建了索引,性能也会很差。当数据量大、并且title的内容很多的时候是个灾难
举例2:我们想象一下百度的搜索引擎,当我们程序员写了错误代码,到百度上搜索一个关键字查找答案的时候,百度是怎么处理的。比如程序出现的IO异常,我们去百度搜索,根据词条来检索出来我们需要的内容,然后把网上的资源都汇总起来。这个时候百度不会把网络资源放到mysql中,那样在查找关键字,得多慢。当然搜索引擎的技术很复杂。这里就例子就是说明了搜索引擎有多快,为什么有的情况不适用关系型数据库。
结果就是关系型数据库不适合做海量数据的搜索、分析、计算
2.2:为什么要使用ES
前边我们知道关系型数据库的检索困难,比如大数据量的文本检索、计算等等。
那么ES是怎样实现的呢?如下图所示,当我们查询字段的时候
1:首先对title进行分词,分成小米、手机、华为、充电器、手环5个词
2:根据分词创建倒排索引,也就是词条和文档id的对照关系
3:进行查询的时候根据倒排索引,去词条列表中查询到文档id
4:根据文档id查询文档,存储结果集,然后返回。
这样就不会想mysql一样,模糊查询,几千万的数据也得一条一条比对,从而提升了效率。ES适合做海量数据的分析、计算,没有关系型数据库的事务概念
思考点:这样查询是很快、没问题?但是对大量的数据,比如上千万的数据进行分词,然后创建倒排索引这个过程怎么样。我也不知到、我们接着学习吧,也会能找到答案。
2.3:ES和mysql对比
1:mysql存储是表的形式存储数据,ES是文档存储,文档就是数据,将文档格式化成json存储。
2:关系数据库 ⇒ 数据库 ⇒ 表 ⇒ 行 ⇒ 列(Columns)
Elasticsearch ⇒ 索引 ⇒ 类型 ⇒ 文档 ⇒ 字段(Fields)
文章来源:https://www.toymoban.com/news/detail-835722.html
总结:ES和关系型数据库各有所长、各有所短,不是替换关系,是互补关系。文章来源地址https://www.toymoban.com/news/detail-835722.html
3:ES的安装
到了这里,关于ElasticSearch第一章(入门介绍)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!