ElasticSearch是什么?
Elasticsearch 是一个分布式、高扩展、高实时的搜索与数据分析引擎,具有实时性搜索各类文档的功能。以下将会简称为ES。
ES官网 目前最新的版本为7.10.1
ES作为一个分布式框架,使得它拥有了集群的概念,即类似于传感器的物联网,一个物联网组网中可以存在多个传感器节点,但必然有一个头节点(但不限于一个),作为统领其余子节点的存在,子节点可以在组网中发现集群,并加入集群,加入后节点在集群中可互相被发现,并且共同为搜索提供算力服务,就像是航班塔,很多人在协助不同的航班处理数据,但还有一个总管理者在看着这些人的工作,他们都是一起为航班服务。
那么他与MySQL有何不同呢?
- MySql是一个关系型数据库管理系统,简单来说,我们如果需要对一些数据进行保存,日后你可能将会把数据读取出来、修改、删除、新增,MySql将会提供各项语句让你与其交互操作。他就像一个你设计好的笔记本,忠实地帮助你记录各项数据。
- ES是一个开源的数据分析搜索引擎,尽管他一样可以做到对数据进行增删改查,但他更多的是,使用查询语句,加入不同的过滤条件,最后返回给你满足这些条件的结果,并且内部有一个_score字段,即权重分数,他认为该文档(可以理解为SQL中的一行数据)越满足你的条件,该分数就会越大,返回结果默认以分数倒序,对于操作语句方面的问题,后面再谈。
- 他与SQL是如下对应关系
MySql | ES |
---|---|
DataBase | index |
Table | type |
Row | Document |
Column | Field |
每个字段的类型约束,长度约束 | Mapping |
index | 索引可自由创建,包括空索引 |
SQL语句 | Query DLS |
SELECT *FROM TABLE | GET http://localhost:port/index |
UPDATA TABLE SET | PUT http://localhost:port/index/type/文档id… |
从上面的的关系可以知道,ES中的index实际上是属于DataBase,ES是一个搜索引擎,他的各类文档数据是存在硬盘之上的。有点晕?没关系,我们下面形象展开来说
应对不同的业务,我们通常会拥有不同的SQL数据库,比如说一个数据库存了A学校(数据库地址是:locahost:9191),另一个数据库存储了B学校(数据库地址是:locahost:9292)。
现在教育局,需要做一个查询搜索系统方便查询这两个学校或者以后多个学校的学生相关数据,假如局内有一个JAVA工程师,他会使用JDBC桥接不同的数据库(即分辨使用不同的数据库地址和账号密码联通数据库),编写业务逻辑,最后再把数据整合展示出来
倘若这个工程师学会了ES,那么事情就变得方便起来了
从两种方式的例图不难看出 ES的index存储就像是SQL的一个总数据库,里面存了A,B学校的表,只不过这些数据在ES里统一存储,省去了我们要预先配设不同的数据库地址账号密码桥接访问的问题,当然ES的在检索数据方面的能力远不止于此。