大数据培训技术之ELK-Mapping

发布时间:2021年01月27日作者:atguigu浏览次数:1,042

Mapping

  • 作用:

定义数据库中的表的结构的定义,通过mapping来控制索引存储数据的设置

  1. 定义Index下的字段名(Field Name)
  2. 定义字段的类型,比如数值型、字符串型、布尔型等
  3. 定义倒排索引相关的配置,比如documentId、记录position、打分等
  • 获取索引mapping

不进行配置时,自动创建的mapping

请求:

GET /atguigu/_mapping

响应:

{

  “atguigu”: {                                                                #索引名称

    “mappings”: {                                                         #mapping设置

      “student”: {                                                         #type名称

        “properties”: {                                                  #字段属性

          “clazz”: {                                             

            “type”: “text”,                                           #字段类型,字符串默认类型

            “fields”: {                                                        #子字段属性设置

              “keyword”: {                                         #分词类型(不分词)

                “type”: “keyword”,                     

                “ignore_above”: 256

              }

            }

          },

          “description”: {

            “type”: “text”,

            “fields”: {

              “keyword”: {

                “type”: “keyword”,

                “ignore_above”: 256

              }

            }

          },

          “name”: {

            “type”: “text”,

            “fields”: {

              “keyword”: {

                “type”: “keyword”,

                “ignore_above”: 256

              }

            }

          }

        }

      }

    }

  }

}

 

  • 自定义mapping

请求:

PUT my_index                                                       #索引名称

{

  “mappings”:{

    “doc”:{                                                    #类型名称

      “dynamic”:false,                                  

      “properties”:{          

        “title”:{

          “type”:”text”                                  #字段类型

        },

        “name”:{

          “type”:”keyword”

        },

        “age”:{

          “type”:”integer”

        }

      }

    }

  }

}

 

响应:

{

  “acknowledged”: true,

  “shards_acknowledged”: true,

  “index”: “my_index”

}

 

  • Dynamic Mapping

es依靠json文档字段类型来实现自动识别字段类型,支持的类型

JSON类型

es类型

null

忽略

boolean

boolean

浮点类型

float

整数

long

object

object

array

由第一个非null值的类型决定

string

匹配为日期则设为data类型(默认开启)

匹配为数字的话设为float或long类型(默认关闭)

设为text类型,并附带keyword的子字段

 

 

  • 注意:

mapping中的字段类型一旦设定后,禁止修改

原因:Lucene实现的倒排索引生成后不允许修改(提高效率)

 如果要修改字段的类型,需要从新建立索引,然后做reindex操作

  • dynamic设置
  1. true:允许自动新增字段(默认的配置)
  2. False:不允许自动新增字段,但是文档可以正常写入,无法对字段进行查询操作
  3. strict:文档不能写入(如果写入会报错)

 

可以设置在type下,也可以设置在字段中(object类型的字段中)

例如:

put my_index

{

“mappings”:{

“doc”:{

“dynamic”:false,

“properties”:{

“user”:{

“properties”:{

“name”:{

“type”:”text”

},”social_networks”:{

“dynamic”:true,

“properties”:{}

}

}

}

}

}

}

}

 

  • copy_to

将该字段的值复制到目标字段,实现_all的作用

不会出现在_source中,只用来搜索

put my_index

{

“mappings”:{

“doc”:{

“properties”:{

“frist_name”:{

“type”:”text”,

“cope_to”:”full_name”

},”last_name”:{

“type”:”text”,

“cope_to”:“full_name”

},”full_name”:{

“type”:”text”

}

}

}

}

}

 

put my_index/doc

{

“frist_name”:”John”,

“last_name”:”Smith”

}

 

GET my_index/doc

{

“query”:{

“match”:{

“full_name”:”John Smith”,

“operator”:”and”

}

}

}

 

  • Index属性

Index属性,控制当前字段是否索引,默认为true,即记录索引,false不记录,即不可以搜索,比如:手机号、身份证号等敏感信息,不希望被检索

 

例如:

1、创建mapping

PUT my_index

{

  “mappings”: {

    “doc”:{

      “properties”: {

        “cookie”:{

          “type”:”text”,

          “index”: false

        }

      }

    }

  }

}

 

  • 创建文档

PUT my_index/doc/1

{

  “cookie”:”123″,

  “name”:”home”

}

 

  • 查询

大数据培训

  • Index_options用于控制倒排索引记录的内容,有如下4中配置

docs:只记录docid

freqs:记录docid和term frequencies(词频)

position:记录docid、term frequencies、term position

Offsets:记录docid、term frequencies、term position、character offsets

 

text类型默认配置为position,其默认认为docs

记录的内容越多,占用的空间越大

想要了解跟多关于大数据培训课程内容欢迎关注尚硅谷大数据培训,尚硅谷除了这些技术文章外还有免费的高质量大数据培训课程视频供广大学员下载学习


上一篇:
下一篇:
相关课程

java培训 大数据培训 前端培训

关于尚硅谷
教育理念
名师团队
学员心声
资源下载
视频下载
资料下载
工具下载
加入我们
招聘岗位
岗位介绍
招贤纳师
联系我们
全国统一咨询电话:010-56253825
地址:北京市昌平区宏福科技园2号楼3层(北京校区)

深圳市宝安区西部硅谷大厦B座C区一层(深圳校区)

上海市松江区谷阳北路166号大江商厦3层(上海校区)

武汉市东湖高新开发区东湖网谷(武汉校区)

西安市雁塔区和发智能大厦B座3层(西安校区)

成都市成华区北辰星拱青创园综合楼3层(成都校区)