笔记来源 → B站学习视频:最新ElasticSearch6实战教程。
v+数字是视频序号,内容根据我的理解微调了。
上篇介绍排序和一些简单的原理:elasticsearch6实战教程学习笔记(六)-- 排序及原理
本篇内容:dynamic mapping策略。
目录
(3)定制dynamic mapping template(type)
dynamic mapping策略
(1)dynamic:
① true :遇到陌生字段就 dynamic mapping。
② false :遇到陌生字段就忽略。
③ strict :遇到陌生字段就报错。
PUT /mauanx3 // 创建索引mauanx3、type为user
{
"settings":{
"number_of_shards":5, // 5个分片
"number_of_replicas":1 // 1个副本
},
"mappings":{
"user":{
"dynamic":"strict", // 出现name、age、characters之外的字段会报错。
"properties":{
"name": {
"type": "text"
},
"characters":{
"type": "object", // object类型
"dynamic":true // object内出现陌生字段就 dynamic mapping。
}
}
}
}
}
添加数据:
POST /mauanx3/user/_bulk
{"create":{"_index":"mauanx3","_type":"user","_id":1}}
{"name":"Abbey","characters":{"age":20,"sex":"female"}}
{"create":{"_index":"mauanx3","_type":"user","_id":2}}
{"name":"Barbara","characters":{"age":21,"sex":"female"}}
{"create":{"_index":"mauanx3","_type":"user","_id":3}}
{"name":"Cindy","characters":{"age":22,"sex":"female"}}
{"create":{"_index":"mauanx3","_type":"user","_id":4}}
{"name":"Daisy","characters":{"age":19,"sex":"female"}}
{"create":{"_index":"mauanx3","_type":"user","_id":5}}
{"name":"Ella","characters":{"age":20,"sex":"female"}}
{"create":{"_index":"mauanx3","_type":"user","_id":6}}
{"name":"Fitch","characters":{"age":20,"sex":"male"}}
这样修改/添加会报错。(POST/PUT都可以,后同,区别见前面。推荐使用POST。)
POST /mauanx3/user/1
{
"name":"Abbey",
"age":22,
"characters":{
"sex":"female"
}
}
这样修改/添加不会报错。
POST /mauanx3/user/1
{
"name":"Abbey",
"characters":{
"age":22,
"sex":"female"
}
}
(2)date_detection:
默认开启。开启时,xxxx-xx-xx型的文本会被自动映射成日期,可在mapping中关闭。
在document中设置为false。
PUT /mauanx4 // 创建索引mauanx4、type为user
{
…
"mappings":{
"user":{
" date_detection ":false //关闭。
}
}
}
(3)定制dynamic mapping template(type)
PUT /mauanx5 // 创建索引mauanx5、type为user
{
"mappings":{
"user":{
"dynamic_templates": [
{
"en":{ // 模板名称
"match":"*_en", // 所有名称结尾为_en的字段(此处使用了通配符,其他样式可自行修改。Eg:en_* à 开头为en_的字段)
"match_mapping_type":"string", // 匹配es自动识别的字段类型,如boolean,long,string等
"mapping":{ // 该字段的mapping
"type":"text", // 类型为text
"analyzer":"english" // 分词器为英文分词器
}
}
}
]
}
}
}
补充参考:Elasticsearch Mapping设置。(我不知道这是es.x的mapping,仅供参考)
下篇:Java + es 实战。