以下是Elasticsearch中提到的关于Mapping的各模块概述:
---
1.Dynamic mapping(动态映射)
动态映射是指Elasticsearch在索引文档时,自动检测字段类型并创建字段映射的过程。当你首次索引一个文档时,Elasticsearch会根据字段的值类型(如字符串、数字、日期等)自动推断字段的映射类型。例如:
• 字符串字段会被自动映射为`text`或`keyword`类型。
• 数字字段会被映射为`integer`、`long`等类型。
• 日期字段会被映射为`date`类型。
动态映射的优点是方便快捷,但缺点是可能导致意外的字段类型推断,因此在生产环境中通常建议显式定义映射。
---
2.Explicit mapping(显式映射)
显式映射是指在索引创建时,手动定义字段的映射类型和参数。通过显式映射,你可以精确控制字段的存储方式、分析器、是否可搜索等属性。例如:
```json
PUT /my_index
{
"mappings": {
"properties": {
"name": { "type": "text" },
"age": { "type": "integer" },
"created_at": { "type": "date" }
}
}
}
```
显式映射适用于需要对字段进行精细控制的场景,例如自定义分词器、设置字段是否存储等。
---
3.Runtime fields(运行时字段)
运行时字段是一种在查询时动态计算的字段,而不是在索引时存储的字段。运行时字段可以基于已有的字段进行计算或转换,例如:
• 将字符串字段转换为日期格式。
• 根据多个字段的值计算一个新字段。
运行时字段的优点是灵活性高,但可能会对查询性能产生一定影响,因为每次查询都需要动态计算字段值。
---
4.Field data types(字段数据类型)
字段数据类型定义了字段可以存储的数据格式和行为。Elasticsearch支持多种数据类型,包括:
• 核心数据类型:如`text`、`keyword`、`integer`、`float`、`date`等。
• 复杂数据类型:如`object`、`nested`、`geo_point`等。
• 特殊数据类型:如`ip`、`binary`、`completion`等。
选择合适的数据类型对于优化存储和查询性能至关重要。
---
5.Metadata fields(元数据字段)
元数据字段是Elasticsearch自动为每个文档添加的特殊字段,用于存储文档的元信息。常见的元数据字段包括:
• `_id`:文档的唯一标识符。
• `_index`:文档所属的索引