ElasticSearch 核心概念:索引、类型、文档、字段、映射

关系图

为了便于理解 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)

相当于是数据表的字段,对文档数据根据不同属性进行的分类标识


原文出处:/show_1IX1mgkghnVp.html