Elasticsearch 核心:Mapping 常见数据类型全解析(图解+选型+实战)

张开发
2026/4/18 18:53:36 15 分钟阅读

分享文章

Elasticsearch 核心:Mapping 常见数据类型全解析(图解+选型+实战)
Elasticsearch 核心Mapping 常见数据类型全解析图解选型实战一、前言二、什么是 Elasticsearch Mapping2.1 Mapping 定义2.2 Mapping 核心作用三、Mapping 数据类型整体分类流程图四、Mapping 常见数据类型详解生产必用4.1 字符串类型最常用1. text2. keyword4.2 数值类型1. integer2. long3. double4. scaled_float4.3 日期类型 date4.4 布尔类型 boolean4.5 复杂类型1. object2. nested4.6 地理空间类型geo_point4.7 特殊类型1. ip2. binary3. range五、数据类型与使用场景速查表六、实战标准 Mapping 示例生产可直接用七、Mapping 数据类型常见避坑指南7.1 坑1用 text 做聚合7.2 坑2数字用字符串存储7.3 坑3日期用字符串存储7.4 坑4数组对象用 object7.5 坑5IP 用 keyword八、数据类型选择流程图最实用九、总结Mapping 常见数据类型文末总结总结The Begin点点关注收藏不迷路一、前言在 Elasticsearch 中Mapping是索引的灵魂它定义了文档字段的数据类型、分词规则、存储方式、索引行为。字段类型选择错误会直接导致查询失败、聚合报错、性能暴跌、存储空间暴涨。本文专门整理Mapping 中最常用、最核心的数据类型包含字符串、数值、日期、布尔、复杂、地理、特殊类型带流程图、实战示例、选型指南让你零基础也能搞定 ES Mapping。二、什么是 Elasticsearch Mapping2.1 Mapping 定义Mapping是索引的结构定义相当于 MySQL 的表结构Schema作用定义字段数据类型text、keyword、integer 等定义字段是否分词定义字段是否参与搜索定义字段是否存储2.2 Mapping 核心作用规范数据格式提升查询性能支持正确的聚合、排序、过滤控制分词与检索行为三、Mapping 数据类型整体分类流程图Mapping数据类型字符串类型数值类型日期类型布尔类型复杂类型地理类型特殊类型textkeywordinteger/longfloat/doublescaled_floatobjectnestedgeo_point一句话总结字符串分 text/keyword数字分整数/小数时间 date布尔 boolean对象用 object/nested位置用 geo_point。四、Mapping 常见数据类型详解生产必用4.1 字符串类型最常用1. text用途长文本、全文检索、分词场景文章内容、标题、描述、评论特点分词、不支持聚合/排序示例content:{type:text}2. keyword用途短字符串、精确匹配、聚合、排序场景ID、手机号、状态、城市、姓名特点不分词、支持聚合/排序/过滤示例phone:{type:keyword}4.2 数值类型1. integer整数年龄、状态、数量age:{type:integer}2. long长整数用户ID、订单IDuser_id:{type:long}3. double小数价格、重量、长度price:{type:double}4. scaled_float高精度小数金融金额推荐amount:{type:scaled_float,scaling_factor:100}4.3 日期类型 date用途时间存储、范围查询、时间聚合格式yyyy-MM-dd、时间戳场景创建时间、日志时间、更新时间create_time:{type:date}4.4 布尔类型 boolean用途开关、状态场景是否删除、是否上线、是否生效is_delete:{type:boolean}4.5 复杂类型1. object普通JSON对象嵌套结构user:{type:object,properties:{name:{type:text},age:{type:integer}}}2. nested数组对象解决object查询不精准问题场景订单商品列表、标签数组goods:{type:nested}4.6 地理空间类型geo_point经纬度地理位置场景附近的人、地图检索、地址坐标location:{type:geo_point}4.7 特殊类型1. ip存储IP地址支持IP段过滤user_ip:{type:ip}2. binary二进制数据3. range范围类型时间段、数值范围五、数据类型与使用场景速查表数据类型适用场景核心特点text文章、内容、评论分词、全文搜索keywordID、状态、手机号、城市精确、聚合、排序integer年龄、数量、状态码整数long用户ID、订单ID长整数double价格、重量小数date创建时间、日志时间时间范围、聚合boolean是否删除、是否上线真假object嵌套JSON对象普通嵌套nested数组对象、多元素精准查询geo_point经纬度、地理位置地图检索ipIP地址IP段查询六、实战标准 Mapping 示例生产可直接用PUT /product_index { mappings: { properties: { product_id: { type: keyword }, product_name: { type: text, fields: { keyword: { type: keyword } } }, price: { type: double }, stock: { type: integer }, create_time: { type: date }, is_online: { type: boolean }, user_ip: { type: ip }, location: { type: geo_point }, attrs: { type: nested } } } }七、Mapping 数据类型常见避坑指南7.1 坑1用 text 做聚合报错Text 类型不支持聚合解决使用 keyword7.2 坑2数字用字符串存储问题无法范围查询、排序错误解决使用 integer/long7.3 坑3日期用字符串存储问题无法时间聚合、范围查询解决使用 date 类型7.4 坑4数组对象用 object问题查询数据错乱解决使用 nested 类型7.5 坑5IP 用 keyword问题无法按网段查询解决使用 ip 类型八、数据类型选择流程图最实用长文本短字符串整数小数字段类型字符串?textkeyword数字?integer/longdouble/scaled_float时间?date布尔?boolean数组对象?nestedIP?ip经纬度?geo_point九、总结Mapping 常见数据类型字符串两大类text分词搜索、keyword精确聚合数值类型integer、long、double、scaled_float时间类型date布尔类型boolean复杂类型object、nested地理类型geo_point特殊类型ip、binary、range文末总结Mapping 数据类型是 Elasticsearch建模的基础类型选择直接决定功能是否正常、性能是否优秀。长文本 → text短字符串 → keyword数字 → 数值类型时间 → date数组对象 → nested掌握以上类型足以应对 99% 的业务场景总结Mapping定义索引结构相当于数据库表结构最常用类型text、keyword、integer、long、double、date、boolean复杂类型object普通对象、nested数组对象特殊类型ip、geo_point避坑核心text不聚合、keyword不分词、数字不用字符串、时间不用字符串、数组用nestedThe End点点关注收藏不迷路

更多文章