当前位置: > > > Elasticsearch - 索引库模板使用详解

Elasticsearch - 索引库模板使用详解

    在实际工作中针对一批大量数据存储的时候需要使用多个索引库,如果手工指定每个索引库的 settingsmapping 配置信息的话就很麻烦了。我们可以通过提前创建一个索引库模板,这样后期在创建索引库的时候,只要索引库的命名符合一定的要求就可以直接套用模板中的配置。下面我将通过样例演示如何创建和使用模板。

1,创建模板

(1)下面命令我们创建第一个索引库模板,该模板默认会匹配所有的索引库。
curl -H "Content-Type: application/json" -XPUT 'http://192.168.121.128:9200/_template/t_1' -d '
{
    "template" : "*",
    "order" : 0,
    "settings" : {
        "number_of_shards" : 2
    },
    "mappings" : {
        "properties":{
            "name":{"type":"text"},
            "age":{"type":"integer"}
        }
    }
}'

(2)接着创建第二个索引库模板,该模板只会匹配索引库名称以 te 开头的索引库,通过 template 属性配置的。
注意order 值大的模板内容会覆盖 order 值小的。因此,如果我们创建的索引库名称满足第二个就会使用第二个模板,不满足的话才会使用第一个模板。
curl -H "Content-Type: application/json" -XPUT 'http://192.168.121.128:9200/_template/t_2' -d '
{
    "template" : "te*",
    "order" : 1,
    "settings" : {
        "number_of_shards" : 3
    },
    "mappings" : {
        "properties":{
            "name":{"type":"text"},
            "age":{"type":"long"}
        }
    }
}'

2,使用模板

(1)下面创建一个索引库,索引库名称为:test10
curl  -XPUT 'http://192.168.121.128:9200/test10'
  • 查看索引库 test10settingmapping 信息。通过结果可以看出来 test10 这个索引库使用到了第二个索引库模板。
curl -XGET 'http://192.168.121.128:9200/test10/_settings?pretty'
curl -XGET 'http://192.168.121.128:9200/test10/_mapping?pretty'

(2)接下来创建一个索引库,索引库名称为:hello
curl  -XPUT 'http://192.168.121.128:9200/hello'
  • 查看索引库 hellosettingmapping 信息。通过结果可以看出来 hello 这个索引库使用到了第一个索引库模板。
curl -XGET 'http://192.168.121.128:9200/hello/_settings?pretty'
curl -XGET 'http://192.168.121.128:9200/hello/_mapping?pretty'

3,查看模板

(1)后期想要查看索引库模板内容可以这样查看:
curl -XGET 'http://192.168.121.128:9200/_template/t_*?pretty'

(2)返回结果如下:

4,删除模板

想要删除索引库模板可以这样做,比如下面命令删除 t_2 模板。
curl -XDELETE 'http://192.168.121.128:9200/_template/t_2'
评论0