es里的index和mongo里的collection的区别
概念对比
-
Elasticsearch 中的 index:
- 是数据的逻辑分组,相当于数据库中的“库”或者“表”。
- 一个index里面包含很多document(文档),每个document是一条数据(JSON格式)。
- 索引(index)是Elasticsearch数据和数据结构的基本单位。
-
MongoDB 中的 collection(集合):
- 也是数据的逻辑分组,包含很多document(文档),每个document也是一条数据(BSON格式)。
- collection在MongoDB相当于关系型数据库中的“表”(table)。
具体类比
-
Elasticsearch
- 集群(Cluster) > 索引(Index) > 类型(Type,7.x后已废弃) > 文档(Document)
- 现在一般就是:索引(Index) > 文档(Document)
-
MongoDB
- 数据库(Database) > 集合(Collection) > 文档(Document)
所以,Elasticsearch的index和MongoDB的collection(集合)更加类似,而不是MongoDB的table。
为什么容易混淆
- 传统关系型数据库中是 “数据库 > 表 > 行”;
- MongoDB里“数据库 > 集合 > 文档”;
- Elasticsearch是“索引 > 文档”。
在MongoDB官方文档和社区讨论中,“collection更像是table”,但在Elasticsearch里,“index更像是table”。
总结
- Elasticsearch的index ≈ MongoDB的collection ≈ 关系型数据库的table。
便于记忆的对照表
| 概念 | Elasticsearch | MongoDB | MySQL(关系型数据库) |
|---|---|---|---|
| 数据组织 | Index | Collection | Table |
| 单条数据 | Document | Document | Row |
| 数据库级别 | 无(Cluster) | Database | Database |
所以,Elasticsearch里的index相当于MongoDB里的collection,也就是集合,和MongoDB的table(表)一样起分组作用,但名字不同。