elasticsearch模板

什么是Index Template

Index Templates 帮助你设定Mappings 和Settings,并且按照一定的规则,字段匹配到新创建的索引上。

  • 模板仅在一个索引被创建是才会产生作用,修改模板不会影响已经创建的索引。
  • 可以设定多个索引模版,这些设置会被“merge”在一起。
  • 你可以指定“order”的数值,控制“merging”的过程。

Inde Template 的工作方式

  • 当一个索引被创建时
    • 应用Elasticsearch 默认的settings和mappings
    • 应用order数值低的Index Template 中的设定
    • 应用order数值高的Index Template 的设定,之前的设定会被覆盖
    • 应用创建索引时,用户所指定的Settings和Mappings,并覆盖之前的模板中的设定。
PUT ttemplate/_doc/1
{
	"someNumber":"1",
	"someDate":"2019/01/01"
}

image

创建一个默认的模板

PUT _template/template_default
{
  "index_patterns": ["*"],
  "order" : 0,
  "version": 1,
  "settings": {
    "number_of_shards": 1,
    "number_of_replicas":1
  }
}

image

创建一个 dynamic templates

PUT my_index
{
  "mappings": {
    "dynamic_templates": [
            {
        "strings_as_boolean": {
          "match_mapping_type":   "string",
          "match":"is*",
          "mapping": {
            "type": "boolean"
          }
        }
      },
      {
        "strings_as_keywords": {
          "match_mapping_type":   "string",
          "mapping": {
            "type": "keyword"
          }
        }
      }
    ]
  }
}

![image](/Users/hua/Library/Application Support/typora-user-images/image-20210110162203988.png)

设置dynamic_templates,并且搜索

PUT my_index
{
  "mappings": {
    "dynamic_templates": [
      {
        "full_name": {
          "path_match":   "name.*",
          "path_unmatch": "*.middle",
          "mapping": {
            "type":       "text",
            "copy_to":    "full_name"
          }
        }
      }
    ]
  }
}

PUT my_index/_doc/1
{
  "name": {
    "first":  "John",
    "middle": "Winston",
    "last":   "Lennon"
  }
}


GET my_index/_search?q=full_name:John

文章作者: 凌云
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 凌云 !
  目录