Index Template

PUT _template/template_default
{
	"index_patterns" : ["*"],
	"order" : 0,
	"version" : 1,
	"setttings" : {
		"number_of_shards" : 1,
		"number_of_replicas": 1
	}
}
PUT /_template/template_test
{
	"index_patterns" : ["test*"],
	"order": 1,
	"settings" : {
		"number_of_shards": 1,
		"number_of_replicas": 2
	},
	"mappings" : {
		"date_detection": false,
		"numberic_detection": true
	}
}

在创建一个索引的时候,就会参考模板。

  1. 应用ES默认的setting的mappings。
  2. 应用order低的index template中的设定。
  3. 应用order高的index template中的设定。之前的会被覆盖
  4. 应用用户指定的setting和mapping,覆盖之前的设定。

Dynamic Template

是设置在一个具体的索引上的,根据ES识别的数据类型,结合字段名称,来动态设定字段类型。

例如:

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

如果插入一条数据,上面的模板会将name字段下的除了middle结尾的字段以text类型拷贝到full_name字段中。

这样可能很容易通过一定字段的命名来自动化一些操作。


tags: ElasticSearch