千家信息网

Elasticsearch的dynamic_templates怎么使用

发表于:2025-02-01 作者:千家信息网编辑
千家信息网最后更新 2025年02月01日,这篇文章主要讲解了"Elasticsearch的dynamic_templates怎么使用",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"Elastic
千家信息网最后更新 2025年02月01日Elasticsearch的dynamic_templates怎么使用

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

一、

使用dynamic_templates可以完全控制新字段的映射,你设置可以通过字段名或数据类型应用一个完全不同的映射。

每个模板都由一个名字用于描述这个模板的用途,一个mapping字段用于指导这个映射怎么使用,和至少一个参数match来定义这个模板使用哪个字段。模板是按照顺序检测的,第一个匹配的模板会被启用。通常把具体的模板放置在第一位,不然通用性模板会匹配,导致具体的是无法被匹配到的。

注:以下都是在sense上操作的

例子:我们为/my_index/my_type 分别创建

es:字段名以_es结尾的且是string类型的,需要使用spanish分词器

enn:其他字段的且是string类型的,需要使用english分词器

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

0