菜单 学习猿地 - LMONKEY

VIP

开通学习猿地VIP

尊享10项VIP特权 持续新增

知识通关挑战

打卡带练!告别无效练习

接私单赚外块

VIP优先接,累计金额超百万

学习猿地私房课免费学

大厂实战课仅对VIP开放

你的一对一导师

每月可免费咨询大牛30次

领取更多软件工程师实用特权

入驻
37
0

es mapping

原创
05/13 14:22
阅读数 24172

什么是mapping

mapping类似于数据库的schema,表结构,主要作用如下:

  1. 定义索引中字段的名称
  2. 字段的数据类型
  3. 倒排索引相关的配置

mapping会把es中的json文档映射成lucene所需要的扁平格式。

字段类型

  1. 简单类型

    1. Text / Keyword
    2. Date
    3. Integer / Floating
    4. Boolean
    5. IPv4 / IPv6
  2. 复杂类型

    1. 对象类型、嵌套类型
  3. 特殊类型

    1. 地理信息类型

什么是dynamic mapping

在创建索引文档的时候,es会根据文档信息推算出字段的类似(有时候不一定对)。dynamic mapping机制使得我们无需手动定义mapping。

查看mapping:

// create user_info
post user_info/_doc
{
  "name":"asd",
  "birthday":"2020-11-23",
  "address":"china"
}

//get mapping
get /user_info/_mappings

返回mapping如下:

{
  "user_info" : {
    "mappings" : {
      "properties" : {
        "address" : {
          "type" : "text",
          "fields" : {
            "keyword" : {
              "type" : "keyword",
              "ignore_above" : 256
            }
          }
        },
        "birthday" : {
          "type" : "date"
        },
        "name" : {
          "type" : "text",
          "fields" : {
            "keyword" : {
              "type" : "keyword",
              "ignore_above" : 256
            }
          }
        }
      }
    }
  }
}

dynamic字段设置

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

  • true(默认)文档可以正常写入,新增字段可索引
  • false 文档可以正常写入,但无法对新增字段索引(字段不能被用来搜索)
  • strict 文档不能写入,报错

设置脚本:

PUT user_info/_mapping
{
  "dynamic":"true"
}

显式Mapping设置

示例脚本

PUT new_user
{
  "mappings": {
    "properties": {
      "firstName":
      {
        "type": "text"
      },
       "lastName":
      {
        "type": "text"
      },
       "birth":
      {
        "type": "date",
        "index": false
      }
    }
  }
}

发表评论

0/200
37 点赞
0 评论
收藏