两种场景,大家都用过:
同一个index下,不同的type,命名名称一样的字段名。
同一个数据库下,不同的表,命名名称一样的字段名。
在关系型数据库中,不同的表中,包含相同的字段名是很常见的,而且它们可以做到互不干扰。
在ElasticSearch中,不同的type,如果包含相同的字段名,它们是一样的,es会认为是一个字段,模糊掉不同type的概念。
所以在es里边,type这个概念没必要存在,所以es7就废弃了。
同志们,可以试一下,在同一个index中,不同的type,创建一个同名的字段,但是类型不要弄成一样的,看能否成功创建。
答案是不可以,它会提示你,不可以将这个字段的类型更改为这个类型。
illegla_argument_exception
mapper [create_time_] cannot be changed from type [date] to [keyword]
所以,结论就是,es确实把不同type中的同名字段,当成了一个字段。
在设计索引库的时候,同名问题一定要注意,最简单的方法就是一个index,一个type,想要其他类型,另外创建index,当然你可以用别的字段名。
注意:ES7废弃,但还在用,ES8才真正的去掉了type。