区分ElasticSearch中的Mapping和Type

Elasticsearch Type与Mapping详解
区分mapping和type

理解:在同一个index中,不同type但相同名称的field,必须具有相同的mapping
而mapping定义了文档中的每一个field如何被索引和被查询到。

区别:
(1)type(类型)是索引的逻辑分区(类似tenant)。在索引中,可以定义一个或多个类型。
Type由名称和Mapping组成,type表示一类相似的document。

(2)Mapping像RDBMS中的Schema,每一个index都有一个mapping,mapping定义了索引中的每一个type和一些index相关的设置,,描述了每一个field的数据类型。
(3)type和mapping都是elasticsearch中的概念,Lucene中并没有此概念。

参考:[url]https://www.elastic.co/guide/en/elasticsearch/guide/current/mapping.html[/url]
在使用 Elasticsearch 创建 mapping 时,如果遇到错误提示 `Limit of total fields 1000 exceeded`,这意味着当前索引的字段数量已经超过了默认的最大限制(1000个字段)。此限制是为了防止因映射过于复杂而导致性能下降内存消耗过高。 ### 解决方法 #### 1. 增加 `index.mapping.total_fields.limit` 的值 可以通过在创建索引时显式设置 `index.mapping.total_fields.limit` 参数来增加允许的最大字段数。例如,将最大字段数调整为 2000: ```json PUT /my_index { "settings": { "index.mapping.total_fields.limit": 2000 }, "mappings": { "properties": { "field1": { "type": "text" }, "field2": { "type": "keyword" }, ... } } } ``` 需要注意的是,虽然可以提高该限制,但不建议无限制地增加字段数,因为这可能会导致性能问题资源消耗过高 [^2]。 #### 2. 禁用不需要的字段 如果某些字段并不需要被搜索或聚合操作使用,可以将其设置为 `enabled: false`。这样可以在不影响功能的情况下减少实际使用的字段数量: ```json "mappings": { "properties": { "disabled_field": { "enabled": false } } } ``` 通过这种方式,可以避免不必要的字段占用字段总数的配额 [^1]。 #### 3. 合并字段 如果多个字段具有相似的语义或用途,可以考虑合并这些字段。例如,如果有多个时间戳字段,可以尝试将其统一为一个字段,并通过额外的标识区分不同的时间类型。这种方法可以有效减少字段数量,同时保持数据结构的清晰性 [^3]。 #### 4. 使用动态模板 (Dynamic Templates) Elasticsearch 提供了动态模板功能,可以根据字段名称或其他规则自动应用特定的映射配置。通过合理配置动态模板,可以避免手动定义过多字段,从而降低字段总数: ```json "mappings": { "dynamic_templates": [ { "strings": { "match_mapping_type": "string", "mapping": { "type": "keyword" } } } ] } ``` 动态模板可以帮助简化复杂的映射定义,并且可以灵活地适应不断变化的数据结构 [^2]。 #### 5. 重新评估数据模型 如果字段数量确实非常庞大,可能需要重新评估数据模型的设计。例如,可以考虑是否应该将部分数据存储在关系型数据库中,而只将必要的字段保留在 Elasticsearch 中用于快速检索。这种分离设计可以显著减少 Elasticsearch 的负担,同时提升整体系统的性能 [^3]。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值