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的大量空值,造成资源浪费。所以,不同类型数据,要放到不同的索引中。在es9中,将会彻底删除type。

ElasticSearch7.3学习(十二)----type底层结构及弃用原因的更多相关文章

  1. (转)SpringMVC学习(十二)——SpringMVC中的拦截器

    http://blog.csdn.net/yerenyuan_pku/article/details/72567761 SpringMVC的处理器拦截器类似于Servlet开发中的过滤器Filter, ...

  2. muduo学习笔记(二)Reactor关键结构

    目录 muduo学习笔记(二)Reactor关键结构 Reactor简述 什么是Reactor Reactor模型的优缺点 poll简述 poll使用样例 muduo Reactor关键结构 Chan ...

  3. Scala学习十二——高阶函数

    一.本章要点 在Scala中函数是”头等公民“(可以作为参数,返回值,赋值给其他); 可以创建匿名函数,通常还会交给其他函数; 函数参数可以给出需要稍后执行的行为; 许多集合方法都接受函数参数,将函数 ...

  4. c语言学习之基础知识点介绍(十二):结构体的介绍

    一.结构体的介绍 /* 语法: struct 结构体名{ 成员列表; }; 切记切记有分号! 说明:成员列表就是指你要保存哪些类型的数据. 注意:上面的语法只是定义一个新的类型,而这个类型叫做结构体类 ...

  5. JVM学习十二 - (复习)JVM内存结构

    JVM 内存结构 Java 虚拟机的内存空间分为 5 个部分: 程序计数器 Java 虚拟机栈 本地方法栈 堆 方法区 JDK 1.8 同 JDK 1.7 比,最大的差别就是:元数据区取代了永久代.元 ...

  6. go微服务框架kratos学习笔记二(kratos demo 结构)

    目录 api cmd configs dao di model server service 上篇文章go微服务框架kratos学习笔记一(kratos demo)跑了kratos demo 本章来看 ...

  7. Java编程思想学习(十二) 数组和容器

    一.数组 1).数组的多种初始化方式 下面总结了初始化数组的多种方式,以及如何对指向数组的引用赋值,使其指向另一个数组对象.值得注意的是:对象数组和普通数组的各种操作基本上都是一样的:要说有什么不同的 ...

  8. C#学习笔记二:C#程序结构

    从最简单的HelloWorld开始入手,这是一个最低限度的C#程序结构. C# Hello World 示例 一个C#程序主要由以下几部分组成: 命名空间声明 一个类 类方法 类属性 一个Main方法 ...

  9. TP5学习基础二:目录结构、URL路由、数据操作

    一.安装1.使用git或者composer(composer update)进行实时更新,区别在于git不会清空核心框架目录而composer会清空.2.使用官网打包好的TP压缩包(解压即可用)-&g ...

  10. 强化学习(十二) Dueling DQN

    在强化学习(十一) Prioritized Replay DQN中,我们讨论了对DQN的经验回放池按权重采样来优化DQN算法的方法,本文讨论另一种优化方法,Dueling DQN.本章内容主要参考了I ...

随机推荐

  1. xapian 搜索引擎介绍与使用入门

    Xapian 是一个开源搜索引擎库,使用 C++ 编写,并提供绑定(bindings )以允许从多种编程语言使用.它是一个高度适应性的工具包,允许开发人员轻松地将高级索引和搜索功能添加到自己的应用程序 ...

  2. Linux下安装neo4j

    Linux下安装neo4j 一.JDK安装 参照https://www.cnblogs.com/yclh/p/14849228.html 中jdk1.8的安装 二.下载neo4j 下载地址:https ...

  3. ElasticSearch 映射类型及数据类型区分

    本文为博主原创,未经允许不得转载: 1.ES 中的映射可以分为动态映射和静态映射 动态映射:在关系数据库中,需要事先创建数据库,然后在该数据库下创建数据表,并创建表字段.类型.长度.主键等,最后才能基 ...

  4. nginx 工作原理及特点

    本文为博主原创,未经允许不得转载: nginx 简介:是一个高性能 HTTP 和 反向代理 服务器. Nginx 特点是占有内存少,并发能力强,事实上 Nginx 的并发能力确实在同类型的网页服务器中 ...

  5. Linux-搜索-文件-find-locate-内容过滤-grep

  6. TiDB的搭建与维护过程

    TiDB的搭建与维护过程 背景 总结一下TiDB的搭建以及简单维护过程. 目标: 简单快速的创建TiDB数据库,以及进行备份恢复等工作. TiDB 简介 TiDB(全称:Ti Distributed ...

  7. [转帖]TiDB 数据库统计表的大小方法

    简介:TiDB统计表的大小,列出了一些方法: 1.第一种的统计方式: 基于统计表 METRICS_SCHEMA.store_size_amplification 要预估 TiDB 中一张表的大小,你可 ...

  8. [转帖]Datadog 能成为最大的云监控厂商吗

    https://xie.infoq.cn/article/901cfd6b284e3e103ac70aeb3 作者:睿象云 2021-03-25 本文字数:2256 字 阅读完需:约 7 分钟   D ...

  9. [转帖]@Autowired 和 @Resource 的区别

    @Autowired 和 @Resource 的区别 默认注入方式不同 @Autowired 默认的注入方式为byType(根据类型进行匹配),也就是说会优先根据接口类型去匹配并注入 Bean (接口 ...

  10. fio test 简单查看一些系统的io性能结果

    简单测试的脚本: echo "本次测试测试128k 16k 8k 1k 的 顺序读写 随机读写性能,每个脚本耗时约30s, 总计耗时大约8min左右完成: " fio -name= ...