Elasticsearch的dynamic_templates怎么使用

这篇文章主要讲解了“Elasticsearch的dynamic_templates怎么使用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Elasticsearch的dynamic_templates怎么使用”吧!

成都创新互联公司是一家专注于成都网站建设、网站制作与策划设计,武威网站建设哪家好?成都创新互联公司做网站,专注于网站建设10年,网设计领域的专业建站公司;建站业务涵盖:武威等地区。武威做网站价格咨询:18980820575

一、

使用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怎么使用这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是创新互联,小编将为大家推送更多相关知识点的文章,欢迎关注!


新闻标题:Elasticsearch的dynamic_templates怎么使用
分享路径:http://abwzjs.com/article/ppcpgh.html