字段映射(Mapping)
本章定位:Mapping 是 Elasticsearch 的"Schema 定义"。正确的 Mapping 是高效搜索的前提。
定义与作用
Mapping 定义了索引中每个字段的类型、分词器和存储方式。类比 SQL 的 CREATE TABLE 语句。关键字段类型包括:text、keyword、date、integer、long、float、boolean、geo_point。
解决的痛点:没有正确的 Mapping,ES 无法正确分词(text vs keyword),无法按范围或排序查询数值和日期。
完整示例:飞翔科技学生索引 Mapping
PUT /students
{
"mappings": {
"properties": {
"name": { "type": "text", "analyzer": "ik_max_word", "fields": { "keyword": { "type": "keyword" } } },
"province": { "type": "keyword" },
"score": { "type": "integer" },
"gpa": { "type": "float" },
"enrollment": { "type": "date", "format": "yyyy-MM-dd" }
}
}
}
小结
核心区分:text(分词全文搜索)vs keyword(精确匹配/聚合)。doc_values 启用排序和聚合,norms 关闭可节省存储。Mapping 一旦写入类型的核心属性不可修改,需 Reindex。