ES1:index、type、document、mapping之间的关系

1.1 引言

  由于长期使用es,但是对于es的大体结构存在疑惑,于是在此做一个大致总结。

1.2 数据存储结构

  在 7.0版本之前,es的数据结构如下:
在这里插入图片描述
提示: 通过上图可知,在7.0之前elasticsearch的结构层级是:index->type->document。因此,我们在es中,可以定义多个索引(index),一个索引下可以定义多个类型(type),一个类型下可以存多个文档(document)。


  在 7.0版本之后,es的数据结构如下:
在这里插入图片描述
提示: es的结构依旧是:index->type->document,但是7.0几乎是舍弃了type,因为不在允许用户自定义type,而是存在一个默认的“_doc”类型。因此于用户而言,es7.0+不存在type类型了。

创建例子:

#7.0以前:创建一个叫做product的索引,下面有两个类型(book、phone),他们分别有两个字段name、author与cpu、gpu
PUT /product
{
	"mappings":{
		"book":{
			"properties":{
				"name":{
					"type":"keyword"
				},
				"author":{
					"type":"keyword"
				}
			}
		},
		"phone":{
			"properties":{
				"cpu":{
					"type":"keyword"
				},
				"gpu":{
					"type":"keyword"
				}
			}
		}
	}
}

#7.0之后:分别创建了两个索引:book与phone
PUT /book
{
	"mappings":{
		"properties":{
			"name":{
				"type":"keyword"
			},
			"author":{
				"type":"keyword"
			}
		}
	}
}

PUT /phone
{
	"mappings":{
		"properties":{
			"cpu":{
				"type":"keyword"
			},
			"gpu":{
				"type":"keyword"
			}
		}
	}
}

提示: 从以上dsl可以发现,7.0+不再提供type自定义。在7.0-,mapping映射是跟type绑定的。但是在7.0+后,mapping映射则是跟index绑定。


7.0以前,可以通过关系型数据库来理解es,index相当于数据库、type相当于表、document相当于一条记录。而在7.0+,则是相当于index下没有表了,直接就是一条条数据,可以理解为表取代了数据库,或者说数据库具备了表的功能,反正就是去掉了type(表)这一层。留有此文,以便他日之需。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值