Dynamic Mapping(动态映射)

原文链接 : https://www.elastic.co/guide/en/elasticsearch/reference/5.3/dynamic-mapping.html

译文链接 : http://www.apache.wiki/pages/viewpage.action?pageId=9405268

贡献者 :曾少峰ApacheCNApache中文网

Elasticsearch 最重要的功能之一就是让你尽可能快地开始探索数据。要索引文档,你不用立即创建 index(索引),定义相关的 mapping type(映射类型)和定义相关的 fields(字段)— 你可以只索引 document(文档)、index(索引)、type(类型)和 fields(字段),这些操作都将自动生效。

  1. curl -XPUT 'localhost:9200/data/counters/1?pretty' -H 'Content-Type: application/json' -d' # 1
  2. { "count": 5 }
  3. '

| 1 | 创建名为 data 的索引,其中包含名为 countersmapping type(映射类型),以及名为 countlong 数据类型。 |

自动的检测和添加新的类型以及字段的过程,称之为动态映射。你可以根据需要定制动态映射的规则 :

default mappingdefault 映射)

配置一个基本映射,作用于新的映射类型。

Dynamic field mappings(动态字段映射)

控制动态字段发现的规则。

Dynamic templates(动态模板)

利用自定义规则来配置动态添加的字段的映射。

Tips :

无论是自动还是显式的创建索引,Index templates(索引模板)都允许你为一个新的索引配置 mappingssettingsaliases(别名)。

Disabling automatic type creation(禁用自动类型创建)

每个索引都可以通过将 index setting(索引设置)中的 index.mapper.dynamic 属性设置为 false,来禁用 Automatic type creation(自动创建类型)-(根据数据类型自动创建 mapping):

  1. curl -XPUT 'localhost:9200/data/_settings?pretty' -H 'Content-Type: application/json' -d'
  2. {
  3. "index.mapper.dynamic":false # 1
  4. }
  5. '

| 1 | 禁用名为 “data” 的索引的自动创建类型(根据数据类型自动创建 mapping)。 |

通过对索引模板的设置,可以禁用所有索引的自动创建类型(根据数据类型自动创建mapping)):

  1. curl -XPUT 'localhost:9200/_template/template_all?pretty' -H 'Content-Type: application/json' -d'
  2. {
  3. "template": "*",
  4. "order":0,
  5. "settings": {
  6. "index.mapper.dynamic": false # 1
  7. }
  8. }
  9. '

| 1 | 禁用所有索引的自动创建类型(根据数据类型自动创建mapping)。 |

无论该属性如何设置,在 创建索引 或使用 PUT mapping API 时,我们仍然可以显式的添加 types(类型)。