在ES中,我们有两个概念:映射和模板。我读了官方关于这两个概念的解释,但仍然感到困惑。
- 在模板中,我们可以定义映射。那么,在这种情况下,为什么我们需要映射呢?
- 如果我想要更新映射,我能否只是在模板中修改它?
在ES中,我们有两个概念:映射和模板。我读了官方关于这两个概念的解释,但仍然感到困惑。
模板
和映射
是两个不同的东西。更让人困惑的是,短语“模板”用于两个不同但相关的功能。
映射
索引的映射是将所有存储在该索引中的数据定义为模式。可以将其视为实际存在的内容。
索引模板
索引模板
用于更轻松地为新索引定义映射
。如果要定义许多共享某些公共映射或设置的索引,则可以使用这些共享设置定义索引模板
,并自动应用它们。在模板中,您告诉ElasticSearch它可以将这些模板应用于哪些索引。
映射中的dynamic_templates
为了完整起见,模板还出现在ElasticSearch中的另一个位置。当您为新索引声明映射时,还可以定义dynamic_templates
部分。这允许您根据新字段的类型或名称定义ElasticSearch定义字段映射。例如,您可以创建一个条目,指定任何名称以“_date”结尾的字段都应视为日期字段。这些让您按约定定义字段,而不需要为每个字段显式指定其字段映射。
映射是当前索引所拥有的内容。这些可以在索引上设置和更新。
模板用于在创建新索引时为其创建映射。从我所知道的,它们都来自相同的JSON负载,只是不同的ES端点。
因此,如果应用了映射但没有应用模板,明天的索引很可能会有昨天的映射。