ElasticSearch7.3学习(十二)----type底层结构及弃用原因
2023-03-14 09:43:49 时间
1、type是什么
type,是一个index中用来区分类似的数据的。类似的数据,但是可能有不同的fields,而且有不同的属性来控制索引建立、分词器、field的value。
在底层的lucene中建立索引的时候,全部是opaque bytes类型,不区分类型的。
lucene是没有type的概念的,在document中,实际上将type作为一个document的field来存储,即type。
ElasticSearch通过type来进行type的过滤和筛选。
2、es中不同type存储机制
一个index中的多个type,实际上是放在一起存储的,因此一个index下,不能有多个type重名,而类型或者其他设置不同的,因为那样是无法处理的。注意:下面语句博主没有实验过,只是浏览了一遍,加深自己的理解。
{
"goods": {
"mappings": {
"electronic_goods": {
"properties": {
"name": {
"type": "string",
},
"price": {
"type": "double"
},
"service_period": {
"type": "string"
}
}
},
"fresh_goods": {
"properties": {
"name": {
"type": "string",
},
"price": {
"type": "double"
},
"eat_period": {
"type": "string"
}
}
}
}
}
}
PUT /goods/electronic_goods/1
{
"name": "小米空调",
"price": 1999.0,
"service_period": "one year"
}
PUT /goods/fresh_goods/1
{
"name": "澳洲龙虾",
"price": 199.0,
"eat_period": "one week"
}
es文档在底层的存储是这样子的
{
"goods": {
"mappings": {
"_type": {
"type": "string",
"index": "false"
},
"name": {
"type": "string"
}
"price": {
"type": "double"
}
"service_period": {
"type": "string"
},
"eat_period": {
"type": "string"
}
}
}
}
底层数据存储格式
{
"_type": "electronic_goods",
"name": "小米空调",
"price": 1999.0,
"service_period": "one year",
"eat_period": ""
}
{
"_type": "fresh_goods",
"name": "澳洲龙虾",
"price": 199.0,
"service_period": "",
"eat_period": "one week"
}
3、type弃用
同一索引下,不同type的数据也会存储其他type的field的大量空值,造成资源浪费。所以,不同类型数据,要放到不同的索引中。在
相关文章
- 面试官:啥?SynchronousQueue是钟?点?房?
- 同样都是开发,为什么你不如别人?
- 可视化搭建平台的参考网格线设计
- 为什么要学习更多的编程语言?同时认为 Go 是最佳
- 每一位程序员都应该学习的优秀代码
- 从SaaS的角度,看低代码的本质
- AI自动评审论文,CMU这个工具可行吗?我们用它评审了下论文
- 学习编程中少走这5个弯路
- 面试突击:一个表中可以有多个自增列吗?
- 找论文太难?试试这款「文本生成」论文搜索工具丨开源
- 2021年,学习这7门课程,学会创建无代码应用
- 阿里Seata真香,肝一下Saga模式源码
- 历时10个多月学习了这132个CSS特效 还不来学习-实鼠不易-牛气冲天!
- TensorFlow5岁,它成为最受欢迎ML框架的五个原因
- 通过机器学习识别“迪士尼在逃公主”,程序员宠女的正确打开方式!
- 如何熟练掌握多种编程语言
- 阿里淘系所有程序员一整年的内部技术总结,都在这里了
- 嵌入式笔试面试题目系列(二)
- “无代码”时代,离我们还有多远?
- 什么是最适合初学者的编程语言?