一架梯子,一头程序猿,仰望星空!
Elasticsearch面试题 > 内容正文

Elasticsearch 的映射是什么?请解释静态映射和动态映射。


问题简答

映射是 Elasticsearch 中用来定义索引中每个字段的类型、属性和字段映射方式的过程。静态映射需要手动指定每个字段的类型和属性,可以提高索引和查询的性能;动态映射可以自动检测和创建字段映射,避免了手动定义每个字段的类型和属性的繁琐过程,但是可能会导致映射错误或者不一致。

问题详解:

静态映射

静态映射(Static Mapping)是指在创建索引时,定义好索引中每个字段的类型和属性。静态映射需要手动指定每个字段的类型和属性,例如文本类型、数字类型、日期类型等。通过静态映射,我们可以控制每个字段的存储方式、分析器、索引方式等,以便于更好地控制索引和查询的行为。

静态映射的优点是可以提高索引和查询的性能,因为 Elasticsearch 可以根据字段的类型和属性进行优化,例如使用不同的存储方式、分析器等。但是,静态映射的缺点是需要手动指定每个字段的类型和属性,如果索引中的字段比较多,会比较繁琐。

动态映射

动态映射(Dynamic Mapping)是指在索引中插入文档时,自动检测文档中的字段,并且动态地创建字段映射。通过动态映射,Elasticsearch 可以自动检测每个字段的类型和属性,例如文本类型、数字类型、日期类型等。如果文档中出现了新的字段,Elasticsearch 会自动创建该字段的映射。

动态映射的优点是可以自动检测和创建字段映射,避免了手动定义每个字段的类型和属性的繁琐过程。但是,动态映射的缺点是可能会导致映射错误或者不一致,因为它不能保证每个字段都被正确地映射。为了避免这种情况,我们可以使用一些策略来控制动态映射,例如禁止自动创建新的字段、使用动态模板等。