3 Elasticsearch 篇之Mapping 设置

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/bingdianone/article/details/85717665

mapping简介

·类似数据库中的表结构定义,主要作用如下:
  -定义Index下的字段名( Field Name )
  -定义字段的类型,比如数值型、字符串型、布尔型等,
  -定义倒排索引相关的配置,比如是否索引、记录position等
在这里插入图片描述

自定义 mapping

自定义Mapping的api如下所示:
在这里插入图片描述
. Mapping中的字段类型一旦设定后,禁止直接修改,原因如下:
  -Lucene实现的倒排索引生成后不允许修改
·重新建立新的索引,然后做reindex操作
·允许新增字段
·通过dynamic参数来控制字段的新增
  -true (默认)允许自动新增字段
  -false不允许自动新增字段,但是文档可以正常写入,但无法对字段进行查询等操作
  -strict文档不能写入,报错

在这里插入图片描述
Mapping演示
在这里插入图片描述
插入不存在字段
在这里插入图片描述
查询title:在这里插入图片描述
查询desc字段并没有在这里插入图片描述

copy_to参数说明

copy_to
  -将该字段的值复制到目标字段,实现类似_all的作用
  -不会出现在_source中,只用来搜索 ,
在这里插入图片描述

index参数说明

index
-控制当前字段是否索引,默认为true ,即记录索引, false不记录,即不可搜索,
在这里插入图片描述
敏感信息不被检索可以用到;既可以减少空间;又可以保护隐私

index_options参数说明

. index_options用于控制倒排索引记录的内容,有如下4种配置
  -docs只记录doc id
  -freqs记录doc id和term frequencies
  -positions记录doc id, term frequencies和term position
  -offsets记录doc id,、term frequencies、term position和character offsets。
.text类型默认配置为positions ,其他默认为docs
·记录内容越多,占用空间越大
.index options设定如下所示:
在这里插入图片描述
null_value
  -当字段遇到null值时的处理策略,默认为null ,即空值,此时es会忽略该值。可以通过设定该值设定字段的默认值,在这里插入图片描述

mapping文档说明

https://www.elastic.co/guide/en/elasticsearch/reference/current/mapping-params.html

数据类型

·核心数据类型
  -字符串型text, keyword
  -数值型long, integer, short, byte, double, float, halffloat, scaled_float,
  -日期类型date
  -布尔类型boolean
  -二进制类型binary
  -范围类型integer_range, float_range, long_range, double-range, date_range
·复杂数据类型
  -数组类型array
  -对象类型object
  -嵌套类型nested object
·地理位置数据类型
  - geo_point
  - geo_shape
·多字段特性multi-fields
·允许对同一个字段采用不同的配置,比如分词,常见例子如对人名实现拼音搜索,只需要在人名中新增一个子字段为pinyin即可
https://www.elastic.co/guide/en/elasticsearch/reference/current/mapping-types.html
在这里插入图片描述

dynamic-mapping简介

es可以自动识别文档字段类型,从而降低用户使用成本,如下所示:

在这里插入图片描述
es是依靠JSON文档的字段类型来实现自动识别字段类型,支持的类型如下:
在这里插入图片描述
可以采用如下方式验证es的自动识别:

在这里插入图片描述

dynamic日期与数字识别

·日期的自动识别可以自行配置日期格式,以满足各种需求
  -默认是[ “strict-date-optional-time”,“yyyy/MM/dd HH:mm:ss Z|lyyyy/MM/dd Z”]
  -strict-date-optional-time是ISO datetime的格式,完整格式类似下面:
   -YYYY-MM-DDThh:mm:ssTZD (eg 1997-07-16T19:20:30+01:00)
   -dynamic_date formats可以自定义日期类型
   -date_detection可以关闭日期自动识别的机制
在这里插入图片描述
·字符串是数字时,默认不会自动识别为整型,因为字符串中出现数字是完全合理的
  -numeric_detection可以开启字符串中数字的自动识别,如下所示:
在这里插入图片描述

dynamic-template简介

·允许根据es自动识别的数据类型、字段名等来动态设定字段类型,可以实现如下效果:
  -所有字符串类型都设定为keyword类型,即默认不分词
  -所有以message开头的字段都设定为text类型,即分词
  -所有以long-开头的字段都设定为long类型
  -所有自动匹配为double类型的都设定为float类型,以节省空间
在这里插入图片描述
匹配规则一般有如下几个参数:
  -match_mapping_type匹配es自动识别的字段类型,如boolean,long,string等,
  -match,unmatch匹配字段名
  -path_match,path_unmatch匹配路径
.字符串默认使用keyword类型
  -es默认会为字符串设置为text类型,并增加一个keyword的子字段
在这里插入图片描述
更改前:
在这里插入图片描述
更改后:
在这里插入图片描述
.以message开头的字段都设置为text类型
在这里插入图片描述
修改前:
在这里插入图片描述
修改后:
在这里插入图片描述

在这里插入图片描述
自定义mapping的建议
·自定义Mapping的操作步骤如下:
  1、写入一条文档到es的临时索引中,获取es自动生成的mapping
  2、修改步骤1得到的mapping ,自定义相关配置
  3、使用步骤2的mapping创建实际所需索引
设置mapping
先执行put自动生成字段,然后GET这个mapping拷贝到设置mapping里
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
存入文档:
在这里插入图片描述
重新查看mapping
在这里插入图片描述
以上设定keyword较多;可以借用上一小节的dynamic
在这里插入图片描述
在这里插入图片描述

索引模板

·索引模板,英文为Index Template ,主要用于在新建索引时自动应用预先设定的配置,简化索引创建的操作步骤。
  -可以设定索引的配置和mapping
  -可以有多个模板,根据order设置, order大的覆盖小的配置
·索引模板API , endpoint为_template ,如下所示:
在这里插入图片描述
如果有个order为10的模板;生成最终索引的时候就会按照10的settings设置
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/bingdianone/article/details/85717665