首页 > 其他 > 详细

Elasticsearch之索引模板index template与索引别名index alias

时间:2017-02-28 13:30:30      阅读:513      评论:0      收藏:0      [点我收藏+]

 

 

为什么需要索引模板?

      在实际工作中针对一批大量数据存储的时候需要使用多个索引库,如果手工指定每个索引库的配置信息(settings和mappings)的话就很麻烦了。

所以,这个时候,就存在创建索引模板的必要了!!1

  索引可使用预定义的模板进行创建,这个模板称作Index templates。模板设置包括settings和mappings通过模式匹配的方式使得多个索引重用一个模板。

  更多,请见

https://www.elastic.co/guide/en/elasticsearch/reference/2.4/indices-templates.html

 

索引别名的应用场景

  比如,公司使用es收集应用的运行日志,每个星期创建一个索引库,这样时间长了就会创建很多的索引库,操作和管理的时候很不方便。

  由于新增索引数据只会操作当前这个星期的索引库,所以就创建了两个别名。

    curr_week:这个别名指向这个星期的索引库,新增数据操作这个索引库。

    last_3_month:这个别名指向最近三个月的所有索引库,因为我们的需求是查询最近三个月的日志信息。

  后期只需要修改这两个别名和索引库之间的指向关系即可。应用层代码不需要任何改动。

  还要把三个月以前的索引库close掉,留存最近一年的日志数据,一年以前的数据删除掉。

 

 

  可以类似,指定多个索引库查询。定义一个索引别名,如zhouls_all,将索引zhouls1映射到这个别名上,把索引zhouls2,把索引zhoulsn,也映射到这个别名上。

  那么,在通过别名来查询时,直接同查询别名zhouls_all,就可以把对应所有的索引zhouls,1,2,...n都一次性查询完了。

   但是,如果你是具体要插入和操作数据,则,就不方便使用别名了。而是具体到某个索引zhoulsn了。

 

 

 

 

 

 

 

 

 

 

 

 

操作详解

     创建模板方式一:(直接创建)

curl -XPUT localhost:9200/_template/template_1 -d ‘
{
"template" : "te*",
"settings" : {
"number_of_shards" : 1
},
"mappings" : {
"type1" : {
"_source" : {"enabled" : false }
}
}
}

  说明:(1)上述定义的模板template_1将对用te开头的新索引都是有效。

     (2)template_1是模板名,te*是以te开头的索引

 

 

 

 

 创建模板方式二:(包名别名)

  模板中也可以包含别别名的定义,如下:

curl -XPUT localhost:9200/_template/template_1 -d ‘
{
"template" : "te*",
"settings" : {
"number_of_shards" : 1
},
"aliases" : {
"alias1" : {},
"alias2" : {
"filter" : {
"term" :{"user" : "kimchy" }
},
"routing" :"kimchy"
},
"{index}-alias" : {}
}
}

   说明:(1)

        (2)template_1是模板名,te*是以te开头的索引

 

 

 

 

删除模板

         使用模板名称对模板进行删除.

curl -XDELETE localhost:9200/_template/template_1 

 

 

同样也可以查看定义的模板

curl -XGET localhost:9200/_template/template_1  

 

 

 

多个索引模板

         当存在多个索引模板时并且某个索引两者都匹配时,settings和mpapings将合成一个配置应用在这个索引上。合并的顺序可由索引模板的order属性来控制。

curl -XPUT localhost:9200/_template/template_1 -d ‘
{
"template" : "*",
"order" : 0,
"settings" : {
"number_of_shards" : 1
},
"mappings" : {
"type1" : {
"_source" : {"enabled" : false }
}
}
}

==================================================================
curl -XPUT localhost:9200/_template/template_2 -d ‘
{
"template" : "te*",
"order" : 1,
"settings" : {
"number_of_shards" : 1
},
"mappings" : {
"type1" : {
"_source" : {"enabled" : true }
}
}
}

  上述order为1的配置将覆盖order为0的配置,最终索引的配置source的enabled为true。

 

 

 

 

模板配置文件

         除了以上方式,索引模板也可以在文件中进行配置。索引模板的配置文件需要在每个

主节点的config目录下,目录结构为:config/templates/template_1.json,temp
late_1.json的样例如下:

 1 {  
 2   "template-logstash" : {  
 3     "template" : "logstash*",  
 4     "settings" : {  
 5       "index.number_of_shards" : 5,  
 6       "number_of_replicas" : 1,  
 7       "index" : {  
 8         "store" : {  
 9           "compress" : {  
10             "stored" : true,  
11             "tv": true  
12           }  
13         }  
14       }  
15     },  
16     "mappings" : {  
17       "_default_" : {  
18         "properties" : {  
19           "dynamic" : "true",  
20         },  
21       },  
22       "loadbalancer" : {  
23         "_source" : {  
24           "compress" : true,  
25         },  
26         "_ttl" : {  
27           "enabled" : true,  
28           "default" : "10d"  
29         },  
30         "_all" : {  
31           "enabled" : false  
32         },  
33         "properties" : {  
34           "@fields" : {  
35             "dynamic" : "true",  
36             "properties" : {  
37               "client" : {  
38                 "type" : "string",  
39                 "index" : "not_analyzed"  
40               },  
41               "domain" : {  
42                 "type" : "string",  
43                 "index" : "not_analyzed"  
44               },  
45               "oh" : {  
46                 "type" : "string",  
47                 "index" : "not_analyzed"  
48               },  
49               "responsetime" : {  
50                 "type" : "double",  
51               },  
52               "size" : {  
53                 "type" : "long",  
54                 "index" : "not_analyzed"  
55               },  
56               "status" : {  
57                 "type" : "string",  
58                 "index" : "not_analyzed"  
59               },  
60               "upstreamtime" : {  
61                 "type" : "double",  
62               },  
63               "url" : {  
64                 "type" : "string",  
65                 "index" : "not_analyzed"  
66               }  
67             }  
68           },  
69           "@source" : {  
70             "type" : "string",  
71             "index" : "not_analyzed"  
72           },  
73           "@timestamp" : {  
74             "type" : "date",  
75             "format" : "dateOptionalTime"  
76           },  
77           "@type" : {  
78             "type" : "string",  
79             "index" : "not_analyzed",  
80             "store" : "no"  
81           }  
82         }  
83       }  
84     }  
85   }  
86 }

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 索引模板index template操作示例

  比如,我们会创建zhouls,zhouls1,zhouls2,,,等这样的索引库。那么,我们创建模板索引库指定是zhouls*。

那么,

  1创建模板

技术分享

  在es的安装目录下,输入,如下,回车

curl -XPUT 192.168.80.10:9200/_template/template_1 -d {
    "template" : "zhouls*",
    "order" : 0,
    "settings" : {
        "number_of_shards" : 1
    },
    "mappings" : {
        "type1" : {
            "_source" : { "enabled" : false }
        }
    }
}

   

 

 

 

 

技术分享

[hadoop@HadoopMaster elasticsearch-2.4.3]$ curl -XPUT ‘192.168.80.10:9200/zhouls10/emp/1‘ -d ‘{"name":"zs"}‘
{"_index":"zhouls10","_type":"emp","_id":"1","_version":1,"_shards":{"total":2,"successful":2,"failed":0},"created":true}[hadoop@HadoopMaster elasticsearch-2.4.3]$
[hadoop@HadoopMaster elasticsearch-2.4.3]$
[hadoop@HadoopMaster elasticsearch-2.4.3]$ curl -XGET http://192.168.80.10:9200/zhouls10/_settings?pretty
{
"zhouls10" : {
"settings" : {
"index" : {
"creation_date" : "1488280491485",
"uuid" : "R4dWmru2T9uO1JFOE98r5w",
"number_of_replicas" : "1",
"number_of_shards" : "1",
"version" : {
"created" : "2040399"
}
}
}
}
}
[hadoop@HadoopMaster elasticsearch-2.4.3]$

 

 

技术分享

技术分享

 

 

   

 

 

  2、查看模板

技术分享

[hadoop@HadoopMaster elasticsearch-2.4.3]$ curl -XGET http://192.168.80.10:9200/_template/temp*?pretty
{
"template_1" : {
"order" : 0,
"template" : "zhouls*",
"settings" : {
"index" : {
"number_of_shards" : "1"
}
},
"mappings" : {
"type1" : {
"_source" : {
"enabled" : false
}
}
},
"aliases" : { }
}
}
[hadoop@HadoopMaster elasticsearch-2.4.3]$

   说明,模板名为temp*,索引为zhouls*

 

 

 

 

   3、删除模板

 

 

 

 

 

 

 

 

 

  注意:order值大的模板内容会覆盖order值小的。

技术分享

[hadoop@HadoopMaster elasticsearch-2.4.3]$ curl -XPUT 192.168.80.10:9200/_template/template_1 -d ‘
> {
> "template" : "*",
> "order" : 0,
> "settings" : {
> "number_of_shards" : 1
> },
> "mappings" : {
> "type1" : {
> "_source" : { "enabled" : false }
> }
> }
> }
> ‘
{"acknowledged":true}[hadoop@HadoopMaster elasticsearch-2.4.3]$

   这个表示,模板template_1匹配所有的索引。

        模板是template_1,索引是*

 

 

 

技术分享

[hadoop@HadoopMaster elasticsearch-2.4.3]$ curl -XPUT 192.168.80.10:9200/_template/template_2 -d ‘
> {
> "template" : "te*",
> "order" : 1,
> "settings" : {
> "number_of_shards" : 1
> },
> "mappings" : {
> "type1" : {
> "_source" : { "enabled" : true }
> }
> }
> }
> ‘
{"acknowledged":true}[hadoop@HadoopMaster elasticsearch-2.4.3]$

  说明:表示模板template_2匹配索引以te开头的

           模板是template_2,索引是te*

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

索引别名index alias操作示例

1、增加索引别名

技术分享

curl -XPOST ‘http://192.168.80.10:9200/_aliases‘ -d {
    "actions" : [
        { "add" : { "index" : "zhouls", "alias" : "zhouls_all" } }
    ]
}

  即,zhouls是索引,zhouls_all是索引别名

技术分享

技术分享

  可以看到,成功啦!

 

 

 

 

 2、可以同时为多个索引映射到一个索引别名

 技术分享

curl -XPOST ‘http://192.168.80.10:9200/_aliases‘ -d {
    "actions" : [
        { "add" : { "index" : "zhouls", "alias" : "zhouls_all" } },
        { "add" : { "index" : "zhouls10", "alias" : "zhouls_all" } }
    ]
}

技术分享

 

 

 

 

 

 

 

3、删除索引别名

  1、删除索引zhouls映射的索引别名zhouls_all

技术分享

curl -XPOST ‘http://192.168.80.10:9200/_aliases‘ -d {
    "actions" : [
        { "remove" : { "index" : "zhouls", "alias" : "zhouls_all" } }
    ]
}

技术分享

 

  2、删除索引zhouls10映射的索引别名zhouls_all

技术分享

curl -XPOST ‘http://192.168.80.10:9200/_aliases‘ -d {
    "actions" : [
        { "remove" : { "index" : "zhouls10", "alias" : "zhouls_all" } }
    ]
}

技术分享

 

Elasticsearch之索引模板index template与索引别名index alias

原文:http://www.cnblogs.com/zlslch/p/6478168.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!