ElasticSearch系列 - Mapping

ElasticSearch系列 - Mapping

dynamic Mapping

Mapping类似数据库中的schema定义,作用如下

  • 定义索引中的字段的名义
  • 定义字段的数据类型,例如字符串,数字,布尔
  • 字段,倒排索引的相关配置

Mapping会把JSON文档映射成Lucene所需要的扁平格式。一个Mapping属于一个索引的Type (MySQL中的Table)

  • 每个文档都属于一个Type
  • 一个Type有一个Mapping定义
  • 7.0开始,不在需要在Mapping定义指定Type信息

字段的数据类型

  • 简单类型:text(全文检索)/keyword(关键词检索),Date,integer/floating,Boolean,IPV4&IPV6
  • 复杂类型:对象类型/嵌套类型
  • 特殊类型:geo_point geo_shape percolator (地理位置,经纬度之类)

Dynamic Mapping
在写入文档时候,如果索引不在会自动创建,es根据文档信息自动推测字段类型

有时候不准,例如地理位置信息

当类型如果设置不对,一些功能无法正常运行,例如range查询

类型的自动识别

类型 具体 ES类型
字符串 日期 Date
数字 float/long
一般字符串 text/keyword
布尔值 boolean
浮点数 float
整数 long
对象 object
数组 第一个非空数值决定
空值 忽略

能否更改Mapping字段类型(mysql能否改表定义)
- 新增字段
dynamic设置为true 一旦有新增字段文档写入,Mapping更新
dynamic设置false,Mapping不会更新,新增字段无法索引,但会出现在_source中(文档可以被索引出来)
dynamic设置strict 文档写入失败

  • 已有字段 一旦有数据写入无法修改字段定义;如果希望改字段类型,必须Reindex API 重建索引
Dynamic Mappings true false strict
文档可索引 yes yes no
字段可索引 yes no no
Mapping被更新 yes no no
自定义Mapping
PUT users1
{
   
    "mappings" 
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值