Elastic Stack学习笔记3-Mapping设置

1.es中的mapping

  • 类似数据库中的表结构定义,主要作用如下:

  • 定义Index下的字段名称(Field Name)。

  • 定义字段的类型,比如数值型、字符型、布尔型等。

  • 定义倒排索引相关的配置,比如是否索引、是否记录position位置等。

  • 查询指定Index的mapping

2.自定义mapping

  • mapping中的字段类型一旦设定后,禁止直接修改,原因如下:

  • Lucene实现的倒排索引生成后不允许修改。

  • 允许新增字段

  • 通过dynamic参数来控制字段的新增。

  • true(默认)允许自动新增字段。

  • false不允许自动新增字段,但是文档可以正常写入,但无法对字段进行查询操作。

  • strict,文档不能写入,报错。

3.copy_to参数

  • 将字段的值复制到目标字段。

  • 不会出现在source中,只用来搜索。

  • 实例如下:

  • 修改my_index的mapping,设置copy_to参数。

  • 创建文档

  • 根据full_name进行查询

返回:

4.index参数

  • 控制当前字段是否索引,默认为true,即记录索引,false不记录,即不可搜索。使用场景不需要做查询的字段或者敏感信息字段,例如:手机号、身份证等,可以节省部分空间。

5.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。

  • 记录内容越多占用空间越大。

6.null value设置

  • 当字段遇到null时的处理策略,默认为null,此时es会忽略该值,可以通过设定该值来给字段设置默认值。

7.数据类型

  • 核心数据类型

  • 字符串类型text、keyword。

  • 数值类型long、integer、short、byte、double、float、half_float、scaled_float。

  • 日期类型date。

  • 布尔类型boolean。

  • 二进制类型binary。

  • 范围类型integer_range、float_range、long_range、double_range、date_range。

  • 复杂数据类型

  • 数组类型array。

  • 对象类型object。

  • 嵌套类型nested object。

  • 地理位置数据类型

  • geo_point

  • geo_shape

  • 专用类型

  • 记录ip地址ip。

  • 实现自动补全completion。

  • 记录分词术token_count。

  • 记录字符串hash值murmur3。

  • percolator。

  • join。

  • 多字段特性-multi-fields

  • 允许对同一个字段采用不同的配置,比如分词,常见例子:通过拼音搜索人名。通常的做法是增加一个pinyin的字段,拼音搜索时使用该字段。但是这种方法不太优雅改变了原有的文档结构。

  • 推荐的做法时对人名字段增加一个子字段,这种方案需要一个“pinyin”分词器,将汉字转化为拼音。

8.Dynamic mapping

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

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

8.Dynamic mapping

  • 允许根据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

  • es匹配到doube类型设置为float,以节省空间

9.自定义mapping的建议

  • 自定义mapping的操作步骤如下

  1. 写一条文档到es的临时索引中,获取es自动生成的mapping。

  1. 修改步骤a得到的mapping,自定义相关配置。

  1. 使用步骤b的mapping创建实际所需索引。

来源:

https://coding.imooc.com/learn/list/181.html

官方地址:

https://www.elastic.co/guide/en/elasticsearch/reference/6.0/_basic_concepts.html

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值