2 mapping映射-介绍

映射:
    映射定义了,elasticsearch中每一个字段被处理的方式,即该字段是当做整数,日期,还是字符串处理等。
    实际中elasticsearch的数据类型会更多
    常用的映射定义如:
    定义哪一个字符串字段应该当做text类型
    定义哪一个字段,包含数字,日期,地理位置
    定义哪些字段,应该被_all字段索引到
    日期的格式
    定义通用规则控制动态增加的字段(field)
 
映射类型:
    每个索引都有自己的映射类型,用于定义json文档是如何被索引的
 
映射分类:
    静态映射
        可以理解为mysql中表设计,每一个字段被指定为一种数据类型
    动态映射
        当文档中出现没有定义过的字段时,动态映射会自动决定该字段的类型,并对该字段添加映射
    配置映射分类:
        通过dynamic属性进行控制
        true: 默认值,动态添加字段
        false:忽略新字段
        strict:遇到陌生字段,抛出异常
     使用范围
         根对象上或者object类型的任意字段上
 
字段类型:
    元数据字段(Meta-fileds)
        元数据字段,主要用于了文档是如何处理的,包括_index,_type,_id,_source
        标识元数据
            _index   文档所属的索引
            _type     文档的映射类型
            _id         文档的id号
        文档元数据
            _source  代表文档内容的原始json
                           如果文档内容过多,将它存储在es中,会消耗大量资源,可以将之关闭,选择部分字段进行存储,或者全部关闭,交由第三方hbase什么的存储。
            _size       由mapper-size插件计算的_source的大小        
 
        索引元数据
            _filed_name    所有属性字段,包括non-null值的字段
            _ignored         索引时被忽略的字段
        路由元数据
            _routing         标识文档与shard的关系,文档路由参数
        其它元数据
            _mete          应用特殊元数据
 
        
    属性字段(fields or properties)
        定义了文档包含的字段类型
 
属性字段的类型
    基本类型:text,keyword,date,long,double,boolean,ip
    支持json的嵌套类型,如object或者nested
    特殊类型 geo_point(地理位置),geo_shape,completion
 
    同一个属性字段,可以用于不同的目的。比如string可以当做text用于全文索引,keyword可以用于聚合和排序等
 
使用dynamic开启动态映射后,容易出现映射爆炸。尤其是当文档比较大时,假如它每次都有新的关键字插入,这样就会导致映射爆炸,以下推荐几个参数用于处理这种情况。
     index.mapping.total_fields.limit
            索引中最大的属性字段数目,包括alias和object,默认1000
     index.mapping.depth.limit
            属性字段的深度
     index.mapping.nested_fields.limit
 
    index.mapping.nested_objects.limit
    
    index.mapping.field_name_length.limit
            属性字段名长度
 
映射名更改:
        已经存在的映射不允许修改,除非创建一个新的映射,并将旧映射的数据重新导入。
        如果是修改映射中的属性字段名,可以通过命名别名实现。
 
 
 
 
        
 
                
 
 
 
 
 
 
 
 
 
 
 
posted @ 2020-12-19 22:38  dos_hello_world  阅读(263)  评论(0)    收藏  举报