关系图
为了便于理解 ElasticSearch 的概念,下面是 与 MySQL 的概念对比图:
Index 类似于 MySQL 中的数据库 Database;
Type 类似于 MySQL 中的表 Table。
注意:在 7.x 版本中被完全删除Document 类似于 MySQL 中的数据行 Row,每个文档由多个字段 Filed 组成,这个Filed 就类似于 MySQL 的 Column;
Mapping 是对索引库中的索引字段及其数据类型进行定义,类似于关系型数据库中的表结构 Schema;
ElasticSearch 使用自己的领域语言 Query DSL 来进行增删改查,而 MySQL 使用 SQL 语言进行上诉操作。
索引(Index)
相当于 mysql中的 数据库
一个索引就是一个拥有几分相似特征的文档的集合。
比如:
- 博文内容的索引
- 产品索引
- 店家索引
一个索引由一个名字来标识(必须全部是 小写字母),对这个索引中的文档进行索引、搜索、更新和删除的时候,都要使用到这个名字。
在一个集群中,可以定义任意多的索引。
能搜索的数据必须索引,这样的好处是可以提高查询速度
比如:新华字典前面的目录就是索引的意思,目录可以提高查询速度。
Elasticsearch 索引的目的:一切设计都是为了 提高搜索性能
类型(Type)
相当于 mysql中的 表,在 7.x 版本中 默认不支持,预计在 8.x 版本中 移除
- 5.x 支持多种 type
- 6.x 只能有一种 type
- 7.x 默认不再支持自定义索引类型,默认类型为:
_doc
映射(Mapping)
映射(mapping) 是定义文档及其包含的字段如何 存储 和 索引 的过程
相当于 mysql 中的表结构,可以定义 字段类型
如:可以指定字段的 数据类型、默认值、分析器、是否被索引 等等。
文档(Document)
相当于mysql表中的一行记录
一个文档是一个可被索引的基础信息单元,也就是一条数据
比如:
- 一篇博文
- 一个商品的详情
文档以 JSON(Javascript Object Notation)格式来表示
可以存储 任意多 的文档
字段(Field)
相当于是数据表的字段,对文档数据根据不同属性进行的分类标识
