ES学习--自定义Mapping的设置和常见参数介绍

ES学习--自定义Mapping的设置和常见参数介绍

 

通常索引的 Mapping 结构可以在创建索引时由 ElasticSearch 帮我们自动构建,字段类型由 ElasticSearch 自动推断,但这样做有一些问题,比如字段类型推断不准确默认所有字段都会构建倒排索引等,自定义Mapping就可以解决上述这些问题,本篇经验就分享一下如何构建自定义Mapping以及相关的常用参数。

工具/原料

  • ElasticSearch, Kibana

方法/步骤

  1. 为索引自定义Mapping

    语法结构为:

    PUT 索引名称

    {

        "mapping" : {

            properites : {

                   "字段1名称" : {

                          "type" : "指定类型",

                          其他参数

                   }

                   其他字段定义...           

            }

        }

    }

    最佳实践:我们可以完全参考手册编写 Mapping ,但不建议这样做,容易出错,调试也麻烦,可以通过创建一个测试索引并插入测试文档,然后查看ElasticSearch为这个索引自动创建的Mapping,基于这个Mapping进行修改来构建我们自己的 Mapping。

    ES学习--自定义Mapping的设置和常见参数介绍

  2. 自定义Mapping常用参数--index

    自定义的Mapping和自动生成的Mapping一样,默认会为所有字段构建倒排索引,即所有字段均可以作为搜索条件进行搜索,但有时我们希望有些字段不能够被搜索,比如手机号,通过将索引中字段定义部分的 index 参数设置为 false (默认为true),即可达到这种效果。

    将部分字段设置为不可搜索,一是可以阻止一些恶意的搜索,二是可以节省一些存储空间(倒排索引占据的空间)。

    ES学习--自定义Mapping的设置和常见参数介绍

    ES学习--自定义Mapping的设置和常见参数介绍

  3. 自定义Mapping常用参数--null_value

    对于文档中值为 null 的字段(注意不设置该字段的值不代表其为null),无法直接指定null来搜索,可以通过在 mapping 中为该字段指定 null_value 属性的值(null的替代值),在搜索该字段为null的文档时,使用替代值即可。

    注意,文本类型或者数值类型的字段无法使用 null_value 属性,keyword类型(不分词)和date类型字段可以使用该属性。

    ES学习--自定义Mapping的设置和常见参数介绍

    ES学习--自定义Mapping的设置和常见参数介绍

  4. 自定义Mapping常用参数--copy_to

    通过在字段中使用这个属性,可以将多个字段的值拷贝到另一个字段中(该字段最终也会被进行分词处理)。

    ES学习--自定义Mapping的设置和常见参数介绍

    ES学习--自定义Mapping的设置和常见参数介绍

  5. 索引字段的数组表示

    在 ElasticSearch 中,对于字段数据类型,是不存在数组这个概念的,也就是说对一个给定一个类型的字段(比如text,integer等),其可以保存单个该类型的值也可以保存该类型的一个值数组

    ES学习--自定义Mapping的设置和常见参数介绍

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值