es index 改名_Elasticsearch之索引模板index template与索引别名index alias

为什么需要索引模板?

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

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

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

更多,请见

索引别名的应用场景:

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

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

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

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

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

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

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

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

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

一、索引模板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}

}

}

}'

说明:  (1)模板template_1匹配所有的以zhouls开头的索引。

(2)索引模板是template_1,索引是zhouls*。

[hadoop@HadoopMaster elasticsearch-2.4.3]$curl -XPUT '192.168.80.10:9200/zhouls10/emp/1' -d '{"name":"zs"}'       (给索引zhouls10赋值)

{"_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、查看定义的模板

curl -XGET 192.168.80.10:9200/_template/template_1

我这里,创建定义模板temp*就省略了。

3、删除定义模板

[hadoop@HadoopMaster elasticsearch-2.4.3]$ curl -XDELETE 192.168.80.10:9200/_template/template_1    (删除定义的模板)

{"acknowledged":true}[hadoop@HadoopMaster elasticsearch-2.4.3]$

[hadoop@HadoopMaster elasticsearch-2.4.3]$ curl -XGET http://192.168.80.10:9200/_template/template_1?pretty   (查看,可见删除模板成功)

{ }

[hadoop@HadoopMaster elasticsearch-2.4.3]$

[hadoop@HadoopMaster elasticsearch-2.4.3]$curl -XDELETE 192.168.80.10:9200/_template/temp*    (删除定义的模板)

{"acknowledged":true}[hadoop@HadoopMaster elasticsearch-2.4.3]$

[hadoop@HadoopMaster elasticsearch-2.4.3]$ curl -XGET http://192.168.80.10:9200/_template/temp*?pretty    (查看下,删除成功)

{ }

[hadoop@HadoopMaster elasticsearch-2.4.3]$

4、创建多个索引模板

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

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

}

}

}'

得到,

然后,输入如下:再创建一个模板

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}

}

}

}'

得到,

[hadoop@HadoopMaster elasticsearch-2.4.3]$ curl -XGET 192.168.80.10:9200/_template/template_1       (查看模板template_1)

{"template_1":{"order":0,"template":"*","settings":{"index":{"number_of_shards":"1"}},"mappings":{"type1":{"_source":{"enabled":false}}},"aliases":{}}}[hadoop@HadoopMaster elasticsearch-2.4.3]$

[hadoop@HadoopMaster elasticsearch-2.4.3]$ curl -XGET 192.168.80.10:9200/_template/template_2        (查看模板template_1)

{"template_2":{"order":1,"template":"te*","settings":{"index":{"number_of_shards":"1"}},"mappings":{"type1":{"_source":{"enabled":true}}},"aliases":{}}}[hadoop@HadoopMaster elasticsearch-2.4.3]$

[hadoop@HadoopMaster elasticsearch-2.4.3]$

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

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

5、模板配置文件:

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

主节点的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 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"} }

]

}'

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值