教程 elasticsearch tutorial

映射与数据类型

在 Elasticsearch 中,**映射(mapping)**决定了文档中字段的类型与行为,类似于关系型数据库中的“表结构”。合理的映射设计对于索引效率、查询准确性与存储成本具有重要影响。

1. 什么是映射(Mapping)

映射用于定义每个字段的名称、数据类型、是否参与搜索、分词方式等。默认情况下,Elasticsearch 会自动推断字段类型,但强烈建议为生产环境手动定义映射。

2. 常见数据类型

类型 描述
text 可分词文本,支持全文搜索
keyword 精确匹配文本,不分词(如标签、状态)
integer 整数型
float 浮点型
boolean 布尔值(true / false)
date 日期时间,支持多种格式解析
object 嵌套的 JSON 对象
nested 特殊对象类型,用于嵌套数组查询

3. 创建映射示例

json
PUT /products
{
  "mappings": {
    "properties": {
      "name":     { "type": "text" },
      "price":    { "type": "float" },
      "tags":     { "type": "keyword" },
      "released": { "type": "date" }
    }
  }
}

`

4. 查看与修改映射

  • 查看映射:GET /products/_mapping
  • 修改映射(受限,仅支持新增字段):建议使用 reindex 重建索引以变更已定义字段

5. 自动映射 vs 手动映射

模式 优点 缺点
自动推断 快速,适合测试场景 易产生类型错误,字段冲突难排查
手动定义 可控,结构清晰 初期设计工作量较大

理解映射与数据类型的设置是设计良好索引结构的关键,能有效避免查询偏差、节省存储并提升性能。