在 Elasticsearch (ES) 中,Mapping (映射) 类似于关系型数据库(如 MySQL)中的 Schema(表结构定义)。它定义了索引中的文档包含哪些字段,以及这些字段的数据类型(如 text, keyword, integer, date 等)和索引方式。 Elasticsearch 支持两种 Mapping 方式:动态 Mapping (Dynamic Mapping) 和 静态 Mapping (Explicit/Static Mapping)。 以下是两者的详细区别和对比: --- 1. 动态 Mapping (Dynamic Mapping) 定义: 当你向一个不存在的索引写入文档,或者向已有索引写入包含新字段的文档时,Elasticsearch 会自动根据 JSON 数据的内容推断字段类型,并自动创建 Mapping。ES 号称 "Schemaless"(无模式)主要就是基于这个特性。 工作机制: ES 依靠内置的规则来猜测数据类型: JSON $\rightarrow$ JSON 整数 $\rightarrow$ JSON 浮点数 $\right...