ES-Type

Type是什么

  • type,是一个 index 中用来区分类似的数据的,类似的数据,但是可能有不同的 fields
  • 而且有不同的属性来控制索引建立、分词器
  • lucene 是没有 type 的概念的
  • document 中,实际上将 type 作为一个 document 的 field 来存储
  • 即 type,es 通过 _type 来进行 type 的过滤和筛选

Type的存储机制

  • 一个 index 中的多个 type,实际上是放在一起存储的
  • 因此一个 index 下,不能有多个 type 重名
  • 而类型或者其他设置的不同,因为那样是无法处理的
  • 插入数据测试
PUT /goods/electronic_goods/1
{
    "name":"小米空调",
    "price":1999,
    "service_period":"one year"
}

PUT /goods/fresh_goods/1
{
    "name":"澳洲龙虾",
    "price":199,
    "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,
    "service_period":"one year",
    "eat_period":""
}
{
    "_type":"fresh_goods",
    "name":"澳洲龙虾",
    "price":199,
    "service_period":"",
    "eat_period":"one week"
}

Type弃用的原因

  • 同一索引下,不同 type 的数据也需要存储其他 typefield
  • 这样就会出现大量的空值,造成资源的浪费,因此不同的数据要放到不同的索引中
  • ES9 中将会彻底删除 type
posted @   BNTang  阅读(950)  评论(0编辑  收藏  举报
编辑推荐:
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· AI 智能体引爆开源社区「GitHub 热点速览」
· 写一个简单的SQL生成工具
点击右上角即可分享
微信分享提示