美文网首页
为什么Elasticsearch6.X去掉index的多type

为什么Elasticsearch6.X去掉index的多type

作者: 猩球驿站 | 来源:发表于2020-10-19 20:22 被阅读0次

    引言

    Elasticsarch在5.X版本可以配置一个index仅包含一个type。在6.X下强制要求新建的index(5.X下建的索引无影响)只能包含一个type,这是为什么?

    type含义

    为了方便理解,经常讲es的type类比为关系数据库中的表。从本质上讲,这个理解是不对的,因为关系数据库中的表是相互隔离的,而在es则不然,type下的相同字段对应的是Luceneindex的同一个字段,也就是type之间是无法做到完全隔离的。

    字段设置的意义

    • type使得在同一个index中,可以存放多个类别的数据,避免index数量的暴露。
    • 在mapping的元数据中存在_type字段,用于过滤加快搜索的。

    引发的问题

    该字段的设置存在一些问题:

    • 相同index下的所有type中字段需要一致。

      type中相同字段名的配置(如属性、分词器等)需要一致。比如type1的字段f1类型为text,那么type2的字段f1类型必须为text。

    • 相同index下type的mapping差别大,会造成数据的稀疏存储,影响Lucene压缩效率。

      es是建立于Lucene之上的,Lucene会考虑一些压缩算法来提高性能。比如Delta规则来压缩存储数字型、Prefix+Suffix规则来存放按字典排序的文本内容来节省空间。

    • 基于index的统计,一个type下的文档分数会影响其它type下的分数。

    因此,t在相同index下type的mapping相近,type才能尽可能发挥其应有价值。

    建议

    一般而言,一个index设计一个type,毕竟es6.X版本创建的索引不支持多type了,建议将其考虑到集群的建设规范中。
    如果低于6.X版本,想用多type特性,考虑可以参考:

    • index需要模拟关系模型(parent/child)
    • 多个type的mapping很相似。

    相关文章

      网友评论

          本文标题:为什么Elasticsearch6.X去掉index的多type

          本文链接:https://www.haomeiwen.com/subject/yhylmktx.html