ElasticSearch - 基础概念,以及和 mysql 的对比

目录

一、ElasticSearch 基础概念

1.1、文档(document)

1.2、索引(index)

1.3、映射(mapping)

二、对比 mysql

2.1、概念对比

2.2、适用场景对比

2.2.1、那是不是说,有了 es 之后,就可以完全替代我们的 mysql 了呢?

2.2.2、他们两之间有什么关系


一、ElasticSearch 基础概念


1.1、文档(document)

elasticsearch 是面向文档存储的,可以是数据库中的一条商品数据,也可以是订单数据...  这些东西都会被序列化成 json 的格式,存储在 es 中.

比如前面提到的商品表,里面有 id 、title 、price 这些数据,最后都会被序列化成 json 的格式进行存储.

1.2、索引(index)

索引就是相同类型文档的集合。这就相当于是 MySQL 中的表一样,而文档就是表中的每一行数据.

1.3、映射(mapping)

这里的映射就是对文档字段的约束,比如你的字段名字是什么,数据类型是字符串,还是数字啊. 这就类似于 mysql 中的约束一样.

Ps:所以这我们不难看出,这里 es 的概念和 mysql 之间有一些相似关系,下面我们就来对比一下.

二、对比 mysql


2.1、概念对比

一下数据,第一列为 mysql 、第二列为 es.

  • 表 => 索引:索引,就是文档的集合,类似于数据库中的表.
  • 行 => 文档:文档,就是一条条数据,类似数据库中的每一行数据,但是文档的格式是 json 格式.
  • 列 => 字段:字段,就是 json 文档中的字段,类似于数据库中的列.
  • 约束 => 映射:映射是索引中文档的约束,例如字段类型约束(数据类型).类似于数据库中的表结构.
  • SQL => DSL:DSL 是 es 中提供的 json 风格的请求语句,用来操作 es,实现 CRUD.

2.2、适用场景对比

2.2.1、那是不是说,有了 es 之后,就可以完全替代我们的 mysql 了呢?

并不可以啊,因为他们两擅长的事情是不一样的~~

  • mysql:更擅长的是事务的操作,事务里面有原子性、持久性、一致性、隔离性这些,因此可以保证数据的安全性、持久化存储、数据一致. 
  • es:es 中就没有事务的概念了,他更擅长的数据的搜索分析和运算.

例如,现在要做一个下单付款这样的业务,对事务的要求很高,因此就应该使用 mysql 去存储;如果你先在做到是一个商品搜索,或者是页面搜索,这种搜索比较复杂(比如用户通过关键词搜索所有相关信息),那么就需要使用 es 去做.

2.2.2、他们两之间有什么关系

他们在系统架构中是一种互补的关系,比如我们的用户做一个商品订单的搜索,因为 es 的搜索能力更强,所以这里使用 es 进行搜索,那么也意味着,es 这边也要有数据,那怎么确保两边都有数据呢?一般写数据,是写在 mysql 中的(为了数据的安全性以及持久化等特性,mysql 用来存储全量数据),并且 mysql 也会将数据同步给 es,从而实现数据的双写,将来也就是一个互补的效果了.

猜你喜欢

转载自blog.csdn.net/CYK_byte/article/details/133214045