【HBZ分享】ES中的Mapping的数据类型 及 类型的特点

Mapping类型

  1. Numeric: 包括整数类型(long, integer, short, byte) 和 浮点类型(double, float)
  2. Date: 用于存储日期和时间类型
  3. Boolean:用于存储布尔类型(true, false)
  4. Binary: 用于存储二进制类型数据
  5. Array: 用于存储数组或列表类型数据
  6. Object: 用于存储复杂结构类型数据

常见并且很关键的数据类型

  1. text字段类型:

    (1). text类型主要用于全文本搜索,适合存储需要进行全文本分词的文本内容,比如文章,新闻,描述等。

    (2). text字段会对文本内容进行分词处理,将文本拆分成独立的词项进行搜索

    (3). 分词的结果会建立倒排索引,使搜索更加灵活高效

    (4). text字段在搜索时会根据分词结果进行匹配,并计算出相关得分,以便返回最佳结果

  2. keyword字段类型:

    (1). keyword类型主要用于精确匹配和聚合操作, 适合存储不需要分词的精确值,比如ID, 标签等

    (2). keyword类型的字段不会进行分词处理,而是将整一个字段作为整体进行搜索,差一个单词都搜不出来

    (3). 不能进行模糊查询

    (4). keyword字段适合用于过滤和精准匹配,同时可以进行快速的基于精确值的聚合操作

  3. 总节:

    (1). 在选择text还是keyword类型时, 需要根据具体需求来衡量选择,看这个字段能不能做模糊查询,如果要做模糊查询,那就用text字段

    (2). 如果需要全文本搜索,并且希望根据分词进行模糊查询,并得到匹配得分,就用text

    (3). 如需精确匹配,排序或者聚合操作,并且不会对该字段进行模糊查询,比如身份证号等关键信息,则选择keyword类型

ES配置字段类型相关的命令

复制代码
该命令时在kibana中使用的,如果时postman,请加上http://ip:port/


1. 创建索引,并指定字段的类型
PUT /my_index
{
  "mappings": {
    "properties": {
      "title": {
        "type": "text"
      },
      "tags": {
        "type": "keyword"
      },
      "publish_date": {
        "type": "date"
      },
      "rating": {
        "type": "float"
      },
      "is_published": {
        "type": "boolean"
      },
      "author": {
        "properties": {
          "name": {
            "type": "text"
          },
          "age": {
            "type": "integer"
          }
        }
      },
      "comments": {
        "type": "nested",
        "properties": {
          "user": {
            "type": "keyword"
          },
          "message": {
            "type": "text"
          }
        }
      }
    }
  }
}


插入对应数据,并使es本身自带的_id为1
POST /my_index/_doc/1
{
  "title": "小滴课堂最近上线了新课 Elasticsearch Introduction",
  "tags": ["search", "big data", "distributed system", "小滴课堂"],
  "publish_date": "2025-01-01",
  "rating": 4.5,
  "is_published": true,
  "author": {
    "name": "John Doe",
    "age": 30
  },
  "comments": [
    {
      "user": "Alice",
      "message": "Great article!"
    },
    {
      "user": "Bob",
      "message": "Very informative."
    }
  ]
}



2. 查询title字段,并模糊匹配关键字, title是text类型的
GET /my_index/_search
{
  "query": {
    "match": {
      "title": "Elasticsearch"
    }
  }
}


3. 查询tags字段,并精准匹配数组中的某个值,tags是keyword类型的
GET /my_index/_search
{
  "query": {
    "match": {
      "tags": "big data"
    }
  }
}
相关推荐
Decay__5 小时前
05_MySQL 常用 SQL 大全 —— 诊断、管理、优化辅助 SQL 与三大系统库速查
运维·数据库·sql·mysql·架构
Easy_API7 小时前
2.8万亿参数,编程反超GPT-6 Astra:Kimi K3.1 Pro把开源模型推到了哪一步
大数据·人工智能·gpt·深度学习
GlobalInfo7 小时前
2026年机器人多指灵巧手市场分析报告——涵盖行业调查、趋势分析与发展前景
大数据·人工智能·microsoft·微服务·机器人
微订校园外卖平台8 小时前
校园外卖平台选模板还是定制:架构、数据流与验收清单
大数据·架构·外卖系统·本地生活·微订
小徐不徐说9 小时前
C++ 接口与插件设计:从工厂注册到 Qt 动态插件
数据库·c++·qt·系统架构·程序设计
论文复现现场10 小时前
WRF、FEA 能用 L40S 加速吗?求解器检查、断点恢复与长期运行
java·数据库·算法·wrf·有限元分析·gpu计算·断点续算
Eloudy10 小时前
Qwen2.5-14B-Instruct-AWQ 模型文件结构分析
大数据·elasticsearch·搜索引擎
Decay__10 小时前
04_MySQL DBA 日常运维手册 —— 会话管理、锁与阻塞、事务监控、慢查询与日志巡检
运维·数据库·sql·mysql·架构
心梦缘-雪雁12 小时前
SQL Server 查询数据存在哪个表里
数据库
重生之高冷汉堡包12 小时前
跨境电商运营团队如何安全交接店铺账号?多账号权限管理指南
大数据