mysql中mapping标签的作用_ElasticSearch核心之——Mapping设置

前言

我们知道,我们是在ElasticSearch(简称ES)上创建索引文档后,哪怕我们之前没有指定字段的类型,但ES还是会给我们的文档数据给予相对应的字段属性,这背后是什么原理呢?同时,ES中又提供了哪些常见的数据类型给我们使用呢?是否可以自定义Mapping模板来方便自己使用呢?本篇文章将围绕ES的Mapping配置来对上面的问题进行一一解答,希望可以对这方面不熟悉的读者一个参考。

注意:文章中的演示版本为Elastic Search7.6.1,具体的语法各位读者以自己本地的es版本为准

一、Mapping简介

Mapping类似于数据库中的表结构定义,我们可以通过它来定义Index下的字段名(Field Name )、定义字段的类型,比如数值型、字符串型、布尔型等、定义倒排索引相关的配置,比如是否索引、记录position等

PUT /mapping_index

{

"mappings": {

"properties": {

"name": {

"type": "text"

},

"age": {

"type": "integer"

}

}

}

}

c994e8fc86d8

Mapping入门

二、自定义Mapping的API介绍

(一)Dynamic 新增字段严格性

Mappings的API介绍如下:

c994e8fc86d8

Mappings的API介绍

Mapping 中的字段类型一旦设定后,禁止直接修改,因为Lucene实现的倒排索引生成后不允许修改。原因也很好理解,如果可以随意更改字段类型的话,会影响倒排索引的使用,试想一下,如果一个字段原先是text类型,如果变更成keyword类型的话,原先已有的倒排索引就要重新reindex后才能继续使用。

但是ES允许我们对已有的索引进行新增字段的操作,具体的实现方式是通过dynamic参数来定义的。

dynamic-value

含义

true(默认)

允许自动新增字段

false

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

strict

文档不能写入,报错

c994e8fc86d8

新增不存在的文档字段

c994e8fc86d8

通过hobby字段进行查询

c994e8fc86d8

dynamic定义为严格模式

(二)copy_to 字段复制

copy_to 可以将该字段的值复制到目标字段,实现类似于_all的作用

PUT /mapping_index

{

"mappings": {

"properties": {

"lastname": {

"type": "text",

"copy_to": "fullname"

},

"firstname": {

"type&#

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值