Mapping 映射
字数: 0 字 时长: 0 分钟
ES 中的 mapping 类似于 Mysql 中的表结构,用来定义索引中的字段类型,字段的分词器、字段名称等。
自动映射 dynamic mapping
ES 为了照顾入门学习者,会在文档写入时自动生成相应的映射配置,自动映射器会尽可能把字段映射为宽字段类型
数据类型 | 自动映射的字段类型 | 说明 |
---|---|---|
字符串 (String) | text 和 keyword | 如果字符串看起来像是一个日期格式,它可能会被映射为 date 类型。否则,Elasticsearch 将创建一个多字段(text 用于全文搜索,keyword 用于精确匹配)。 |
数值 (Numeric) | long , integer , float , double , byte , short | 根据数值的范围和精度自动选择最合适的数字类型。比如,整数通常会映射为 long 或 integer ,浮点数则为 float 或 double 。 |
布尔 (Boolean) | boolean | 简单的布尔值(如 true 或 false )将被映射为 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"
}
}
}
}