企业🤖AI智能体构建引擎,智能编排和调试,一键部署,支持知识库和私有化部署方案 广告
# Put Mapping /提交映射 提交映射允许提交自定义的类型映射至一个新的索引,或者增加一个新的类型至一个存在的索引,或者增加某个存在类型的字段。 | `curl -XPUT ``'localhost:9200/twitter ?pretty'` `-d'` `{` `"mappings"``: {` `"tweet"``: {` `"properties"``: {` `"message"``: {` `"type"``: ``"text"` `}` `}` `}` `}` `}'` `curl -XPUT ``'localhost:9200/twitter/_mapping/user ?pretty'` `-d'` `{` `"properties"``: {` `"name"``: {` `"type"``: ``"text"` `}` `}` `}'` `curl -XPUT ``'localhost:9200/twitter/_mapping/tweet ?pretty'` `-d'` `{` `"properties"``: {` `"user_name"``: {` `"type"``: ``"text"` `}` `}` `}'` | | [![](https://www.elastic.co/guide/en/elasticsearch/reference/current/images/icons/callouts/1.png)](https://www.elastic.co/guide/en/elasticsearch/reference/current/indices-put-mapping.html#CO125-1) | 创建一个名叫 `twitter` 的索引,在 tweet 包含一个字段 `message` . | | [![](https://www.elastic.co/guide/en/elasticsearch/reference/current/images/icons/callouts/2.png)](https://www.elastic.co/guide/en/elasticsearch/reference/current/indices-put-mapping.html#CO125-2) | 使用 PUT mapping API 增加一个新的类型: `user`. | | [![](https://www.elastic.co/guide/en/elasticsearch/reference/current/images/icons/callouts/3.png)](https://www.elastic.co/guide/en/elasticsearch/reference/current/indices-put-mapping.html#CO125-3) | 使用 PUT mapping API 向 `tweet`增加`user_name` 字段. | 有关 [mapping](https://www.elastic.co/guide/en/elasticsearch/reference/current/mapping.html "Mapping") 更多的信息请在该章节查看. # Multi-index /多索引 PUT mapping API 可以用一个请求支持多个索引.格式如下 | `PUT /{index}/_mapping/{type}` `{ body }` | * `{index}` 接受多个 [index](https://www.elastic.co/guide/en/elasticsearch/reference/current/multi-index.html "Multiple Indices") 和通配符. * `{type}` 是更新的 type 名称. * `{body} `包含需要更新的字段等. # Updating field mappings/更新字段映射 一般来说,现有字段的映射不能更新。 这个规则有一些例外。 例如: 可以将新属性[`properties`](https://www.elastic.co/guide/en/elasticsearch/reference/current/properties.html "properties") 添加到[Object](https://www.elastic.co/guide/en/elasticsearch/reference/current/object.html "Object datatype")数据类型字段中。 新的多字段[multi-fields](https://www.elastic.co/guide/en/elasticsearch/reference/current/multi-fields.html "fields")可以添加到现有字段。 可以禁用[`doc_values`](https://www.elastic.co/guide/en/elasticsearch/reference/current/doc-values.html "doc_values") ,但不能启用。 可以更新[`ignore_above`](https://www.elastic.co/guide/en/elasticsearch/reference/current/ignore-above.html "ignore_above") 参数。 For example: | `curl -XPUT ``'localhost:9200/my_index ?pretty'` `-d'` `{` `"mappings"``: {` `"user"``: {` `"properties"``: {` `"name"``: {` `"properties"``: {` `"first"``: {` `"type"``: ``"text"` `}` `}` `},` `"user_id"``: {` `"type"``: ``"keyword"` `}` `}` `}` `}` `}'` `curl -XPUT ``'localhost:9200/my_index/_mapping/user?pretty'` `-d'` `{` `"properties"``: {` `"name"``: {` `"properties"``: {` `"last"``: {` `"type"``: ``"text"` `}` `}` `},` `"user_id"``: {` `"type"``: ``"keyword"``,` `"ignore_above"``: ``100` `}` `}` `}'` | | [![](https://www.elastic.co/guide/en/elasticsearch/reference/current/images/icons/callouts/1.png)](https://www.elastic.co/guide/en/elasticsearch/reference/current/indices-put-mapping.html#CO126-1) | 创建有一个 `first` 字段的,  [Object datatype](https://www.elastic.co/guide/en/elasticsearch/reference/current/object.html "Object datatype") 字段, 和一个 `user_id` 字段. | | [![](https://www.elastic.co/guide/en/elasticsearch/reference/current/images/icons/callouts/2.png)](https://www.elastic.co/guide/en/elasticsearch/reference/current/indices-put-mapping.html#CO126-2) | 加入 `last`字段 在 `name` object 字段下. | | [![](https://www.elastic.co/guide/en/elasticsearch/reference/current/images/icons/callouts/3.png)](https://www.elastic.co/guide/en/elasticsearch/reference/current/indices-put-mapping.html#CO126-3) | 更新 `ignore_above` 设置 默认: 0. | 每个 [mapping ](https://www.elastic.co/guide/en/elasticsearch/reference/current/mapping-params.html "Mapping parameters")参数指定是否可以在现有字段上更新其设置。 # Conflicts between fields in different types/多字段/类型的冲突 同一索引中具有相同名称的两个不同类型(type)的的字段必须具有相同的映射,因为它们在内部由相同的字段支持。 尝试更新存在于多个类型中的字段的映射参数将抛出异常,除非您指定update_all_types参数,否则将在同一索引中的同一个名称的所有字段上更新该参数。 ![Tip](https://www.elastic.co/guide/en/elasticsearch/reference/current/images/icons/tip.png)唯一可以免除此规则的参数 - 它们可以设置为每个字段上的不同值 - 可以在“[字段在映射typesedit ](https://www.elastic.co/guide/en/elasticsearch/reference/current/mapping.html#field-conflicts "Fields are shared across mapping typesedit")中共享”一节中找到。 例如 失败操作: | `curl -XPUT ``'localhost:9200/my_index?pretty'` `-d'` `{` `"mappings"``: {` `"type_one"``: {` `"properties"``: {` `"text"``: {` `"type"``: ``"text"``,` `"analyzer"``: ``"standard"` `}` `}` `},` `"type_two"``: {` `"properties"``: {` `"text"``: {` `"type"``: ``"text"``,` `"analyzer"``: ``"standard"` `}` `}` `}` `}` `}'` `curl -XPUT ``'localhost:9200/my_index/_mapping/type_one ?pretty'` `-d'` `{` `"properties"``: {` `"text"``: {` `"type"``: ``"text"``,` `"analyzer"``: ``"standard"``,` `"search_analyzer"``: ``"whitespace"` `}` `}` `}'` | | [![](https://www.elastic.co/guide/en/elasticsearch/reference/current/images/icons/callouts/1.png)](https://www.elastic.co/guide/en/elasticsearch/reference/current/indices-put-mapping.html#CO127-1) [![](https://www.elastic.co/guide/en/elasticsearch/reference/current/images/icons/callouts/2.png)](https://www.elastic.co/guide/en/elasticsearch/reference/current/indices-put-mapping.html#CO127-2) | 创建一个两种类型的索引,它们都包含一个具有相同映射的文本字段。 | | [![](https://www.elastic.co/guide/en/elasticsearch/reference/current/images/icons/callouts/3.png)](https://www.elastic.co/guide/en/elasticsearch/reference/current/indices-put-mapping.html#CO127-3) | 尝试更新 `search_analyzer `对 `type_one` 字段时抛出异常 `"Merge failed with failures..."`. | 但是这样会成功 | `curl -XPUT ``'localhost:9200/my_index/_mapping/type_one?update_all_types &pretty'` `-d'` `{` `"properties"``: {` `"text"``: {` `"type"``: ``"text"``,` `"analyzer"``: ``"standard"``,` `"search_analyzer"``: ``"whitespace"` `}` `}` `}'` | | [![](https://www.elastic.co/guide/en/elasticsearch/reference/current/images/icons/callouts/1.png)](https://www.elastic.co/guide/en/elasticsearch/reference/current/indices-put-mapping.html#CO128-1) | 添加update_all_types参数会更新type_one和type_two中的文本字段。 |