当前位置: 首页 > news >正文

Elasticsearch索引字段的类型

在 Elasticsearch 中,索引字段的类型(即 Mapping 中的字段类型)对搜索和存储性能影响很大。下面是各种常用数据类型的用途及推荐使用场景总结:


1. keyword 类型(精确匹配

  • 适合数据

    • 不需要分词,直接用于过滤、排序、聚合等操作的数据。
  • 常见字段

    • 用户 ID、手机号、身份证、订单号、状态码、城市名称、标签、分类名、性别、IP、UUID 等。
  • 说明

    • keyword 是不可被分词的,整体作为一个字符串处理,支持 term 查询、terms 查询、terms aggregation 聚合等。

例子

"user_id": { "type": "keyword" }
"status": { "type": "keyword" }

2. text 类型(分词全文检索

  • 适合数据

    • 需要做全文搜索(模糊搜索、关键词搜索)的字段。
  • 常见字段

    • 评论内容、商品标题、文章内容、日志描述等。
  • 说明

    • 默认会使用 analyzer 分词器进行分词处理,适合搜索但不适合做聚合或排序。

🔸 例子

"title": { "type": "text" }
"comment": { "type": "text" }

组合用法text + keyword(一个字段两个视图)

"username": {"type": "text","fields": {"keyword": { "type": "keyword" }}
}

这样 username 可以分词搜索,也可以用 username.keyword 精确匹配、排序、聚合。


3. integer / long / float / double

  • 适合数据

    • 数值类型字段,如金额、数量、分数、时间戳等。
  • 常见字段

    • 年龄、价格、库存、评分、时间戳(可用 long 表示)、纬度经度等。
  • 建议选择

    • integer:32位整数,适合一般数值;
    • long:64位整数,如毫秒时间戳;
    • float / double:浮点类型,有精度要求时用 double

🔸 例子

"price": { "type": "double" }
"timestamp": { "type": "long" }

4. date

  • 适合数据

    • 任何格式化的日期时间,比如创建时间、更新时间、登录时间等。
  • 常见字段

    • createTime, updateTime, logTime
  • 说明

    • 支持范围查询和时间聚合;
    • 可以通过 format 指定日期格式。

🔸 例子

"create_time": { "type": "date", "format": "yyyy-MM-dd HH:mm:ss||epoch_millis" }

5. boolean

  • 适合数据

    • true/false 类型,如是否删除、是否启用等。

🔸 例子

"is_deleted": { "type": "boolean" }

6. nested

  • 适合数据

    • 对象数组结构,需要对数组中每个对象进行独立查询时使用。

🔸 例子(用户有多个订单):

"orders": {"type": "nested","properties": {"order_id": { "type": "keyword" },"amount": { "type": "double" }}
}

7. object

  • 适合数据

    • 简单对象结构(非数组),如 address。

🔸 例子

"address": {"type": "object","properties": {"province": { "type": "keyword" },"city": { "type": "keyword" }}
}

不推荐的数据类型(谨慎使用)

类型说明
text 做聚合或排序会报错,需要用 keyword
大文本字段text,并避免在 UI 上分页返回
非结构化 JSON不推荐嵌套太深的结构体,会影响性能

总结推荐表

数据类型推荐映射类型用途
用户名text + keyword模糊搜索 + 精准聚合
状态码keyword精确过滤
评论内容text分词搜索
创建时间date时间范围查询
价格/分数double数值计算
是否删除标识boolean布尔条件
时间戳long毫秒时间
地址结构体object结构化字段
对象数组(如订单)nested嵌套多值数组

相关文章:

  • 怎么用腾讯云做网站0元做游戏代理
  • 英文 网站 源码百度seo关键词优化费用
  • 微网站用什么软件做湘潭网络推广
  • 襄阳网站建设企业电商网站建设平台
  • 商务网站的类型一共有几大类企业所得税优惠政策
  • 网站图片尺寸网络营销总监岗位职责
  • 伏羲微官网企业建站授权证书/防伪查询/三合一应用【前端开源】
  • Java项目:基于SSM框架实现的健康管理系统【ssm+B/S架构+源码+数据库】
  • 什么是Redis?
  • ISP Pipeline(4): Anti Aliasing Noise Filter 抗锯齿与降噪滤波器
  • 第12章:冰箱里的CT扫描仪——计算机视觉如何洞穿食材的“生命密码“
  • OpenCV插值方法详解:原理、应用与代码实践
  • 服务器排查与加固服务详细介绍
  • 《HarmonyOSNext应用崩溃自救指南:零数据丢失的故障恢复黑科技》
  • 【机器学习深度学习】数据预处理
  • kanzi 视频插件
  • FFmpeg音视频同步思路
  • 计算机网络 网络层:控制平面(二)
  • 从零开始理解百度语音识别API的Python实现
  • Milvus中 Collections 级多租户 和 分区级多租户 的区别
  • C# .NET Framework 中的高效 MQTT 消息传递
  • 解密 C++ 中的左值(lvalue)与右值(rvalue)的核心内容
  • 命名数据网络 | 数据包(Data Packet)
  • docker 命令
  • 2-深度学习挖短线股-1-股票范围选择
  • 均值 ± 标准差的含义与计算方法‘; Likert 5 分制的定义与应用