2024年大数据最全ElasticSearch8 - 基础概念和映射

GET /my-index/_mappings
– 查看映射的某个字段(索引名为 my-index 的字段 age 的映射)
GET /my-index/_mapping/field/age


### 动态映射


[Dynamic field mapping | Elasticsearch Guide [8.12] | Elastic]( )


ES 与传统关系型数据库不同,创建索引(类比 mysql 的表)时,不需要指定字段,在插入数据时,会自动创建字段和判断字段的类型,这就是动态映射。


动态映射默认的开启的,可以通过 dynamic 参数来修改。[dynamic | Elasticsearch Guide [8.12] | Elastic]( )


以下是不同 dynamic 参数对 json 数据类型的映射




| JSON 数据类型 | dynamic: true | dynamic: runtime |
| --- | --- | --- |
| null | No field added | No field added |
| true or false | boolean | boolean |
| double | float | float |
| long | long | long |
| object | object | No field added |
| array | 取决于数组中的第一个非 null 值 | 取决于数组中的第一个非 null 值 |
| 日期类型的 string | date | date |
| 数字类型的 string | float or long | double or long |
| 其他类型的 string | text with a .keyword sub-field | keyword |


注意:默认的数字检测是关闭的,也就是在 没有映射 的情况下,插入 666 字符串是识别的成字符串的。如果已经配置了映射字段是 long 类型,插入 666 字符串才会被识别为数字


**日期检测:**  
 默认的日期检测格式有 `yyyy/MM/dd HH:mm:ss||yyyy/MM/dd`  
 也就是 2024/01/01 12:00:00 或者 2024/01/01 ,但是 2024-01-01 格式也行, 2024-01-01 12:00:00 不可以


自定义日期检测



PUT my-index
{
“mappings”: {
“dynamic_date_formats”: [ “yyyy/MM”, “MM/dd/yyyy”]
// 或者用
“dynamic_date_formats”: [ “yyyy/MM|MM/dd/yyyy”]
}
}


两者的区别在于,`[ "yyyy/MM", "MM/dd/yyyy"]` 第一次插入数据,匹配到哪种,以后都用这种检测。而 `[ "yyyy/MM|MM/dd/yyyy"]` 则是两种格式都能用


### 显式映射


#### 创建索引时添加映射


不需要搜索的字段,建议用 index: false 属性  
 [index | Elasticsearch Guide [8.12] | Elastic]( )



PUT /my-index
{
“mappings”: {
“properties”: {
“age”: { “type”: “integer” },
“email”: { “type”: “keyword” , “index”: false },
“name”: { “type”: “text” }
}
}
}


#### 向现有映射添加字段



PUT /my-index/_mapping
{
“properties”: {
“employee-id”: {
“type”: “keyword”,
“index”: false
}
}
}


#### 修改现有映射


除了支持的[映射参数]( )外,您不能更改现有字段的映射或字段类型。更改现有字段可能会使已索引的数据无效。


如果需要更改字段的映射,请使用正确的映射创建一个新索引,并将数据[重新索引]( )到该索引中。


说人话就是:ES 是用来搜索的,官方不建议修改字段映射。不比关系数据库,ES 更改字段的映射很麻烦,跟重新建一个索引把数据导进去差不多(官方也建议这么玩)


## 总结


本文用大白话讲了 ES 的几个基本概念和映射的操作,旨在让小白能快速了解 ES,如果文章有错误的地方,欢迎评论区指出。


![img](https://img-blog.csdnimg.cn/img_convert/1aecbdee64f26c098ac6714a9edafc3a.png)
![img](https://img-blog.csdnimg.cn/img_convert/df9f5bb0abb94f344b8f25ed94ace5bd.png)

**网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。**

**[需要这份系统化资料的朋友,可以戳这里获取](https://bbs.csdn.net/topics/618545628)**


**一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!**

net/topics/618545628)**


**一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!**

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值