Skip to content

Mapping 映射

字数: 0 字 时长: 0 分钟

ES 中的 mapping 类似于 Mysql 中的表结构,用来定义索引中的字段类型,字段的分词器、字段名称等。

自动映射 dynamic mapping

ES 为了照顾入门学习者,会在文档写入时自动生成相应的映射配置,自动映射器会尽可能把字段映射为宽字段类型

数据类型自动映射的字段类型说明
字符串 (String)textkeyword如果字符串看起来像是一个日期格式,它可能会被映射为 date 类型。否则,Elasticsearch 将创建一个多字段(text 用于全文搜索,keyword 用于精确匹配)。
数值 (Numeric)long, integer, float, double, byte, short根据数值的范围和精度自动选择最合适的数字类型。比如,整数通常会映射为 longinteger,浮点数则为 floatdouble
布尔 (Boolean)boolean简单的布尔值(如 truefalse)将被映射为 boolean 类型。
日期 (Date)date如果字段内容符合常见的日期格式(例如 ISO 8601),那么该字段将被映射为 date 类型。如果需要支持特定格式,则应在映射中明确指定。
对象 (Object)object当遇到嵌套的对象结构时,Elasticsearch 会将其映射为 object 类型,并且对象中的每个子字段也将根据其内容进行动态映射。
数组 (Array)根据数组元素类型决定数组中的所有元素应具有相同的数据类型,Elasticsearch 会根据数组的第一个元素来推断类型。对于混合类型的数组,建议预先定义映射以确保一致性。

显式映射

在创建索引时就一一指定字段类型和分词器等

json
PUT test_mapping_index
{
  "mappings": {
    "properties": {
      "title":{
        "type": "text",
        "analyzer": "standard"
      },
      "name":{
        "type": "keyword"
      }
    }
  }
}