6.X elasticsearch实战学习笔记_mapping

mapping使用

mapping 是用来定义一个文档以及他的字段是如何存储和索引的过程

  1. 动态映射 Dynamic mapping
  • 使用前不需定义字段、mapping类型
  • 只用索引一个文档,可自动添加新字段名
  • 可将新字段加到顶级mapping type、内部对象、嵌套字段
  • 可配置动态映射规则,以自定义用于新字段的映射
  1. 显示映射 Explicit mapping
  • 创建索引时,同时创建映射类型和字段映射
  • 可通过PUT mappint API 向已存在的索引 添加映射类型和字段
  1. 已存在的index中显示添加mapping

-添加索引: [root@ZYT-Test1 ~]# curl -XPUT http://10.173.28.225:9200/index02
在这里插入图片描述

-在这里插入图片描述

  • List item

  • List item

  • 在这里插入图片描述

  1. 创建index指定mapping
  • List item

  • 在这里插入图片描述
    ps:一个索引的所有文档只能有一个类型

  • 查看mapping

  • [root@ZYT-Test1 ~]# curl -XGET http://localhost:9200/index03/mappings

  1. Settings to prevent mappings explosion
  • 索引定义过多字段会导致mappings explosion
  • 会导致内存不足错误
  • 可设置允许限制人为或动态创建字段mapping的数量
    1. index.mapping.total_fields.limit : 索引中最大字段数,默认1000,字段和对象mapping、字段别名都对接该限制
    1. index.mapping.depth.limit:字段最大深度,以内部对象数量来度量,默认20, 【若所有字段在root对象级定义,则深度为1,若有一个对象mapping,则深度为2】
    1. index.mapping.nested_fields.limit:索引中嵌套字段的最大数,默认50.【索引一个包含100个嵌套字段的文档实际上索引101个字段,因此每个嵌套文档都被索引为单独的隐藏文档】
  1. Updating existing field mapping
  • 已存在的字段映射无法更新
  • 更改映射使已索引的文档无效
  • 应使用正确映射创建一个新索引,将数据reindex到该索引
  • 若只想重命名字段,不改映射,则可引入一个alias字段
  1. mapping type 为何会被移除
  • 一个index中type不是相互独立,可能会互相影响
  • 一个index中,不同type具有相同名称的field,并且field的数据类型必须相同。不同type的相同名称的filed存储在相同地方
  • 一个index中存储具有很少或没有共同字段的不同实体,会导致稀疏数据并干扰lucene的压缩效率
  1. index per document type
  • 数据可以更密集,能够高效压缩
  • 全文搜索评分的term统计数据更准确,同意索引中所有文档都代表单个个体
  • 索引大小可根据文档数调整,小数据量的index使用较少的主分片
  1. 定制type字段
  • 由于集群存储主分片有限,可实现自定义的类型字段
  • 在这里插入图片描述
  • 在这里插入图片描述
  • 在这里插入图片描述
  • 在这里插入图片描述

字段数据类型

ps:数据类型分类:Core、Complex、Geo、Specialised四大类

  1. 核心数据类型
  • String类型:text、keyword
  • 数值类型:long,integer,short,byte,double,float,half_float,scaled_float
  • 日期类型:date
  • 布尔类型:boolean
  • 二进制类型:binary
  • range类型:integer_range,float_range,long_range,double_range,date_range
  1. 复杂数据类型
  • 数组类型:没有专有的类型
  • 对象类型:object,单个json对象
  • 嵌套类型:nested,嵌套的json对象
  1. Geo数据类型
  • Geo-point:geo_point,用于经纬度
  • geo_shape:用于复杂形状,如多边形
  1. 专业数据类型
  • IP类型:ip,用于IPv4 IPv6地址
  • Completion:completion,用于提供自动完成的建议
  • Token count:token_count,用于计算字符中的token
  • mapper-murmur3:murmur3,在索引时计算值的hash并存储到index
  • mapper-annotated-text:annotated-text,用于索引包含特殊标记的文本,一般标识命名实体
  • Percolator:percolator接受来自query-dsl的查询
  • join:为同一索引中的文档定义父子关系
  • Alias:为现有字段定义一个别名

Mapping元数据

  1. 身份标识类元数据:_index,_uid,_type,_id
  2. 文档source元数据:_source,_size
  3. 路由元数据:_routing
  4. 其他元数据:_meta
  5. 索引时元数据字段:_all、_field_names、_ignored

动态mapping

  1. 自动检测和添加新字段称为动态映射
  2. 动态字段映射:管理动态字段检测的规则
  3. 动态模板:自定义规则,用于动态添加字段的mapping
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值