Mapping
- 作用:
定义数据库中的表的结构的定义,通过mapping来控制索引存储数据的设置
- 定义Index下的字段名(Field Name)
- 定义字段的类型,比如数值型、字符串型、布尔型等
- 定义倒排索引相关的配置,比如documentId、记录position、打分等
- 获取索引mapping
不进行配置时,自动创建的mapping
请求:
GET /atguigu/_mapping
响应:
{
“atguigu”: { #索引名称
“mappings”: { #mapping设置
“student”: { #type名称
“properties”: { #字段属性
“clazz”: {
“type”: “text”, #字段类型,字符串默认类型
“fields”: { #子字段属性设置
“keyword”: { #分词类型(不分词)
“type”: “keyword”,
“ignore_above”: 256
}
}
},
“description”: {
“type”: “text”,
“fields”: {
“keyword”: {
“type”: “keyword”,
“ignore_above”: 256
}
}
},
“name”: {
“type”: “text”,
“fields”: {
“keyword”: {
“type”: “keyword”,
“ignore_above”: 256
}
}
}
}
}
}
}
}
- 自定义mapping
请求:
PUT my_index #索引名称
{
“mappings”:{
“doc”:{ #类型名称
“dynamic”:false,
“properties”:{
“title”:{
“type”:”text” #字段类型
},
“name”:{
“type”:”keyword”
},
“age”:{
“type”:”integer”
}
}
}
}
}
响应:
{
“acknowledged”: true,
“shards_acknowledged”: true,
“index”: “my_index”
}
- Dynamic Mapping
es依靠json文档字段类型来实现自动识别字段类型,支持的类型
JSON类型 |
es类型 |
null |
忽略 |
boolean |
boolean |
浮点类型 |
float |
整数 |
long |
object |
object |
array |
由第一个非null值的类型决定 |
string |
匹配为日期则设为data类型(默认开启) 匹配为数字的话设为float或long类型(默认关闭) 设为text类型,并附带keyword的子字段 |
- 注意:
mapping中的字段类型一旦设定后,禁止修改
原因:Lucene实现的倒排索引生成后不允许修改(提高效率)
如果要修改字段的类型,需要从新建立索引,然后做reindex操作
- dynamic设置
- true:允许自动新增字段(默认的配置)
- False:不允许自动新增字段,但是文档可以正常写入,无法对字段进行查询操作
- strict:文档不能写入(如果写入会报错)
可以设置在type下,也可以设置在字段中(object类型的字段中)
例如:
put my_index
{
“mappings”:{
“doc”:{
“dynamic”:false,
“properties”:{
“user”:{
“properties”:{
“name”:{
“type”:”text”
},”social_networks”:{
“dynamic”:true,
“properties”:{}
}
}
}
}
}
}
}
- copy_to
将该字段的值复制到目标字段,实现_all的作用
不会出现在_source中,只用来搜索
put my_index
{
“mappings”:{
“doc”:{
“properties”:{
“frist_name”:{
“type”:”text”,
“cope_to”:”full_name”
},”last_name”:{
“type”:”text”,
“cope_to”:“full_name”
},”full_name”:{
“type”:”text”
}
}
}
}
}
put my_index/doc
{
“frist_name”:”John”,
“last_name”:”Smith”
}
GET my_index/doc
{
“query”:{
“match”:{
“full_name”:”John Smith”,
“operator”:”and”
}
}
}
- Index属性
Index属性,控制当前字段是否索引,默认为true,即记录索引,false不记录,即不可以搜索,比如:手机号、身份证号等敏感信息,不希望被检索
例如:
1、创建mapping
PUT my_index
{
“mappings”: {
“doc”:{
“properties”: {
“cookie”:{
“type”:”text”,
“index”: false
}
}
}
}
}
- 创建文档
PUT my_index/doc/1
{
“cookie”:”123″,
“name”:”home”
}
- 查询
- Index_options用于控制倒排索引记录的内容,有如下4中配置
docs:只记录docid
freqs:记录docid和term frequencies(词频)
position:记录docid、term frequencies、term position
Offsets:记录docid、term frequencies、term position、character offsets
text类型默认配置为position,其默认认为docs
记录的内容越多,占用的空间越大
想要了解跟多关于大数据培训课程内容欢迎关注尚硅谷大数据培训,尚硅谷除了这些技术文章外还有免费的高质量大数据培训课程视频供广大学员下载学习
上一篇: 前端培训技术面向对象的属性有哪些
下一篇: java培训技术使用Servlet原生API作为参数