Elasticsearch 数据类型全解析:支持类型+选型指南+实战流程图

张开发
2026/5/23 23:04:06 15 分钟阅读
Elasticsearch 数据类型全解析:支持类型+选型指南+实战流程图
Elasticsearch 数据类型全解析支持类型选型指南实战流程图一、前言二、Elasticsearch 数据类型官方分类与完整清单2.1 字符串类型最常用2.2 数值类型2.3 日期类型2.4 布尔类型2.5 复杂类型2.6 特殊类型三、Elasticsearch 数据类型选型决策流程图核心3.1 通用选型流程图业务字段直接对照3.2 选型逻辑一句话总结四、Elasticsearch 核心数据类型详解使用场景4.1 字符串类型4.2 数值类型4.3 日期类型 date4.4 布尔类型 boolean4.5 复杂类型4.6 特殊类型五、Elasticsearch 数据类型选择规则与核心原则5.1 原则一能用小类型不用大类型5.2 原则二字符串必须区分 text/keyword5.3 原则三时间必须用 date 类型5.4 原则四布尔状态禁止用字符串5.5 原则五对象数组必须用 nested六、实战标准 Mapping 示例生产直接复制七、常见错误选型与后果避坑指南7.1 错误1数字用字符串存储7.2 错误2时间用字符串存储7.3 错误3所有字符串都用 text7.4 错误4对象数组用 object7.5 错误5IP 用 keyword八、生产环境选型速查表建议收藏九、总结选型核心口诀十、文末总结总结The Begin点点关注收藏不迷路一、前言在 Elasticsearch 中数据类型Mapping设计是索引建模的灵魂直接决定查询性能、存储空间、聚合能力、排序功能。新手最容易犯的错误全部用字符串/text存储、数值存为字符串、日期不规范、复杂类型滥用最终导致查询失败、聚合报错、集群性能雪崩。本文从ES 支持的所有数据类型、核心分类、选型流程图、实战规则、最佳实践全方位讲解让你零基础也能设计出高性能 Mapping。二、Elasticsearch 数据类型官方分类与完整清单ES 数据类型非常丰富按功能分为6 大类覆盖所有业务场景2.1 字符串类型最常用text长文本分词全文检索keyword短字符串不分词精确匹配/聚合2.2 数值类型integer整数-2³¹ ~ 2³¹-1long长整数float单精度浮点double双精度浮点short短整型byte字节型scaled_float高精度小数推荐金额用2.3 日期类型date日期/时间支持时间戳、yyyy-MM-dd 格式2.4 布尔类型booleantrue / false2.5 复杂类型object对象嵌套 JSONnested数组对象解决对象数组无法独立查询问题flattened扁平类型JSON 整体不解析2.6 特殊类型ipIP 地址支持 IP 段查询geo_point地理位置经纬度binary二进制range范围类型alias字段别名三、Elasticsearch 数据类型选型决策流程图核心3.1 通用选型流程图业务字段直接对照渲染错误:Mermaid 渲染失败: Parse error on line 4: ...长文本/短字符串?}C --|长文本(内容/评论)| D[text]C - ----------------------^ Expecting SQE, DOUBLECIRCLEEND, PE, -), STADIUMEND, SUBROUTINEEND, PIPE, CYLINDEREND, DIAMOND_STOP, TAGEND, TRAPEND, INVTRAPEND, UNICODE_TEXT, TEXT, TAGSTART, got PS3.2 选型逻辑一句话总结文本分词用 text精确聚合用 keyword数字用数值时间用 dateIP 用 ip位置用 geo对象数组用 nested。四、Elasticsearch 核心数据类型详解使用场景4.1 字符串类型text作用分词、全文检索场景文章内容、商品描述、评论、标题特性不支持聚合、排序keyword作用精确匹配、聚合、排序、去重场景状态、枚举、手机号、ID、城市、姓名特性不分词、支持所有查询/聚合4.2 数值类型integer年龄、数量、状态码long订单 ID、用户 ID、超大数字double价格、长度、重量scaled_float金融金额推荐4.3 日期类型 date存储格式时间戳、yyyy-MM-dd HH:mm:ss场景创建时间、更新时间、日志时间优势支持时间范围查询、按时间聚合4.4 布尔类型 boolean场景是否删除、是否生效、开关状态优势极小存储空间、极快过滤速度4.5 复杂类型object普通 JSON 对象nested对象数组必须用 nested 才能独立查询4.6 特殊类型ip存储 IP支持 IP 段筛选geo_point经纬度附近的人、地图检索五、Elasticsearch 数据类型选择规则与核心原则5.1 原则一能用小类型不用大类型年龄 0~120 →byteshortinteger数字越小占用空间越小查询越快5.2 原则二字符串必须区分 text/keyword长文本 → text短字符串 → keyword既要搜索又要聚合 →text fields.keyword5.3 原则三时间必须用 date 类型禁止用字符串存储时间字符串无法做时间范围查询、无法按时间排序5.4 原则四布尔状态禁止用字符串错误is_delete:1正确is_delete:true5.5 原则五对象数组必须用 nested普通 object 无法精确查询数组内对象数组对象 →nested六、实战标准 Mapping 示例生产直接复制PUT /product_index { mappings: { properties: { product_id: { type: keyword }, // ID keyword product_name: { // 名称 双类型 type: text, fields: { keyword: { type: keyword } } }, description: { type: text }, // 长文本 text price: { type: double }, // 数值 stock: { type: integer }, // 整数 create_time: { type: date }, // 日期 is_online: { type: boolean }, // 布尔 user_ip: { type: ip }, // IP location: { type: geo_point }, // 地理位置 attrs: { type: nested } // 对象数组 } } }七、常见错误选型与后果避坑指南7.1 错误1数字用字符串存储后果无法范围查询、无法排序、占用空间大正确数值类型7.2 错误2时间用字符串存储后果无法时间聚合、无法范围查询正确date7.3 错误3所有字符串都用 text后果无法聚合、无法排序、查询不准确正确短字段用 keyword7.4 错误4对象数组用 object后果查询数据错乱、无法精准匹配正确nested7.5 错误5IP 用 keyword后果无法按 IP 段筛选正确ip 类型八、生产环境选型速查表建议收藏业务字段推荐类型禁止类型ID、编号keywordtext、string姓名、城市keywordtext内容、描述textkeyword年龄、数量integerkeyword价格、金额double/scaled_floatkeyword创建时间datekeyword、text开关状态booleankeyword、textIP 地址ipkeyword经纬度geo_pointkeyword对象数组nestedobject九、总结选型核心口诀短字符串选 keyword长文本选 text数字用数值时间用 date布尔用 booleanIP 用 ip地理位置用 geo_point对象数组用 nested禁止用 object类型越小越好性能越高越好十、文末总结Elasticsearch 数据类型是 Mapping 设计的基础选型错误会导致功能不可用、性能暴跌。只要严格按照选型流程图分类规则就能轻松设计出稳定、高效、可扩展的生产级 Mapping。本文覆盖 ES全部数据类型 选型逻辑 实战示例 避坑指南是 ES 建模必备参考手册。总结ES 6 大类数据类型字符串、数值、日期、布尔、复杂、特殊选型核心短字符串 keyword长文本 text数字数值时间 date选型流程图按字段类型→业务用途→性能最优逐级选择生产禁忌禁止字符串存数字/时间禁止对象数组用 object最佳实践小类型优先、双类型 textkeyword、nested 处理数组对象The End点点关注收藏不迷路

更多文章