这篇文章主要讲解了“Elasticsearch的dynamic_templates怎么使用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Elasticsearch的dynamic_templates怎么使用”吧!
一、
使用dynamic_templates可以完全控制新字段的映射,你设置可以通过字段名或数据类型应用一个完全不同的映射。
每个模板都由一个名字用于描述这个模板的用途,一个mapping字段用于指导这个映射怎么使用,和至少一个参数match来定义这个模板使用哪个字段。模板是按照顺序检测的,第一个匹配的模板会被启用。通常把具体的模板放置在第一位,不然通用性模板会匹配,导致具体的是无法被匹配到的。
注:以下都是在sense上操作的
例子:我们为/my_index/my_type 分别创建
es:字段名以_es结尾的且是string类型的,需要使用spanish分词器
enn:其他字段的且是string类型的,需要使用english分词器
DELETE /my_index
PUT /my_index
{
"mappings":{
"my_type":{
"dynamic_templates":[
{
"es":{ =>模板名称,随意,一般要有语义
"match":"*_es", =>匹配字段名称
"match_mapping_type":"string" =>匹配字段类型
"mapping":{ => 当匹配到之后,该字段的具体设置
"type":"string",
"anaylzer":"spanish"
}
}
},
{
"en":{ =>模板名称,随意,一般要有语义
"match":"*", =>匹配字段名称(任意,通用的顺序要在之后)
"match_mapping_type":"string" =>匹配字段类型
"mapping":{ => 当匹配到之后,该字段的具体设置
"type":"string",
"anaylzer":"english"
}
}
}
]
}
}
}
POST /my_index/my_type
{
"str_es":"xxx", => 匹配es (字段名称匹配,类型匹配)
"long_es":123, => 不会匹配es (字段名称匹配,但类型不匹配)
"date_es":"2015-01-01", => 不会匹配es (字段名称匹配,但类型不匹配)
"long_en":123, => 不会匹配en (字段名称匹配,但类型不匹配)
"str_en":"xxx", => 匹配en (字段名称匹配,但类型不匹配)
"date_en":"2015-01-01" => 不会匹配en (字段名称匹配,但类型不匹配)
}
//mapping如下,正是结果
GET /my_index/my_type
{
"my_index": {
"mappings": {
"my_type": {
"dynamic_templates": [
{
"es": {
"mapping": {
"analyzer": "spanish",
"type": "string"
},
"match": "*_es",
"match_mapping_type": "string"
}
},
{
"en": {
"mapping": {
"analyzer": "english",
"type": "string"
},
"match": "*",
"match_mapping_type": "string"
}
}
],
"properties": {
"date_en": {
"type": "date",
"format": "dateOptionalTime"
},
"date_es": {
"type": "date",
"format": "dateOptionalTime"
},
"long_en": {
"type": "long"
},
"long_es": {
"type": "long"
},
"str_en": {
"type": "string",
"analyzer": "english"
},
"str_es": {
"type": "string",
"analyzer": "spanish"
},
"str_es2": {
"type": "string",
"analyzer": "english"
}
}
}
}
}
}
二、默认映射
_default_
通常一个索引中的所有类型具有共享的字段和设置,用_default_映射来指定会设置更方便,而不是每次创建一个类型是重复操作。_default_映射新类型的模板,除非在自己类型的明确进行覆盖
感谢各位的阅读,以上就是“Elasticsearch的dynamic_templates怎么使用”的内容了,经过本文的学习后,相信大家对Elasticsearch的dynamic_templates怎么使用这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是天达云,小编将为大家推送更多相关知识点的文章,欢迎关注!