ElasticSearch第一章(入门介绍)

发布于:2024-02-22 ⋅ 阅读:(44) ⋅ 点赞:(0)

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)
在这里插入图片描述

总结:ES和关系型数据库各有所长、各有所短,不是替换关系,是互补关系。

 3:ES的安装

本文含有隐藏内容,请 开通VIP 后查看

网站公告

今日签到

点亮在社区的每一天
去签到