三人行必有我师

es索引对应数据库还是表

Elasticsearch | 作者 Wendy12138 | 发布于2021年06月17日 | 阅读数:5619

一直有个疑问,都说一个索引理论上对应数据库的一个库。但是在我创建的索引中,包括spring-data-elasticsearch中的实体类,明显对应的都是一个数据库表啊。那如果对应一个库的话,不同表之间的不同列,存到一个entity实体里的话,那些不同的列都以null填充吗?
俺是新手,希望有大佬解疑哈, 多谢~
es版本:7.3.0
已邀请:

liujiacheng

赞同来自: Wendy12138

 
  • 为什么要取消type?

同一个Index下的不同实体(不同type意味着field往往不一样,可称为不同实体)太多,且分布稀疏不均,严重干扰了Lucene压缩文档的能力,所以在彻底抛弃type之后,ES的存储能力将会有所提高。
 
  • 所以ES给type制定了消亡路线:

type在6.x中只能有一个,可自定义。
type在7.x中只能有一个,且只能是_doc。
type在8.x(未来版本)彻底取消,API会大变,以前的<INDEX>/<TYPE>/<DOC>的方式会变成<INDEX>/<DOC>
 
 
 
 

FFFrp

赞同来自:

看版本,6之前能有多个type,可以存不同类型的数据,算是库,之后只能是一个type了,就算是一个表

code4j - coder github: https://github.com/rpgmakervx

赞同来自:

一个索引就是一张表。type是逻辑上的东西,类似一个属性,但已经被取消了,不要用type了

liujiacheng

赞同来自:

在有type的时代(比较老),每个索引可以有多个type,类似于database有多个table。
后来,es觉得type不适合,改为每个索引只能有一个type,相当于一个table。

private_void - 一只猹

赞同来自:

一直觉得,index和type映射database和table是不合适的。一个database下,各个table的schema是没有限制的。一个index下,不同type里的字段需要保持一致。多type的使用场景极少,可以认为type是一个过度设计。预计8版本后,就没有type了。
理解的话,index就是一张表,多type就是对这个表的分表。

要回复问题请先登录注册