Elasticsearch索引别名怎么创建
这篇文章主要介绍"Elasticsearch索引别名怎么创建",在日常操作中,相信很多人在Elasticsearch索引别名怎么创建问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答"Elasticsearch索引别名怎么创建"的疑惑有所帮助!接下来,请跟着小编一起来学习吧!
一、
Elasticsearch的别名,就类似数据库的视图。
创建别名:
我们为索引my_index创建一个别名my_index_alias,这样我们对my_index_alias的操作就像对my_index的操作一样
POST /_aliases{ "actions": [ { "add": { "index": "my_index", "alias": "my_index_alias" } } ]}
别名不仅仅可以关联一个索引,它能聚合多个索引
我们为索引my_index_1 和 my_index_2 创建一个别名my_index_alias,这样对my_index_alias的操作(仅限读操作),会操作my_index_1和my_index_2,类似于聚合了my_index_1和my_index_2.我们是不能对my_index_alias进行写操作,当有多个索引时alias,不能区分到底操作哪一个
POST /_aliases{ "actions": [ { "add": { "index": "my_index_1", "alias": "my_index_alias" } }, { "add": { "index": "my_index_2", "alias": "my_index_alias" } } ]}GET /my_index_alias/_search{}
创建filtered的别名:
例如对于同一个index,我们给不同人看到不同的数据,
如my_index有个字段是team,team字段记录了该数据是那个team的。team之间的数据是不可见的。
POST /_aliases{ "actions": [ { "add": { "index": "my_index", "alias": "my_index__teamA_alias", "filter":{ "term":{ "team":"teamA" } } } }, { "add": { "index": "my_index", "alias": "my_index__teamB_alias", "filter":{ "term":{ "team":"teamB" } } } }, { "add": { "index": "my_index", "alias": "my_index__team_alias" } } ]}GET /my_index__teamA_alias/_search 只能看到teamA的数据GET /my_index__teamB_alias/_search 只能看到teamB的数据GET /my_index__team_alias/_search 既能看到teamA的,也能看到teamB的数据
二、情景
情景1:用Logstash采集当前所有nginx的日志,放入ES,索引名叫nginx-YYYY.MM.DD
后来又增加了apache的日志,希望能放到同一个索引中,统一叫做web-YYYY.MM.DD
我们只要把logstash的配置更改下,然后重启,这样数据就会写入到新的索引下,但是同一天的索引就会被写入2个索引中,Kibana中就不好配置了。
解决方案:
1.今天是2015-11-13.我们为nginx-2015.11.13创建一个alias叫做web-2015.07.28,之前所有的nginx日志也这样
2.kibana中把dashboard的配置索引名改为web-YYYY.MM.DD
3.将logstash里面的elasticsearch的配置改为web-YYYY.MM.DD,重启
情景2:用Logstash采集当前所有nginx的日志,放入ES,索引名叫nginx-YYYY.MM.DD
某天2015-11-13希望按照月来建立索引,索引名改为nginx-YYYY.MM
注意:像情景1中,我们建立一个nginx-2015.11的alias执行本月的其他索引,是不行的。因为一个alias指向多个索引后,写这个alias时,ES不可能知道写入到那个真正的索引中。
解决方案1:
1.新建索引nginx-2015.11 以及它的nginx-2015.11.01,nginx-2015.11.02,...,nginx-2015.11.30等
2.等到了第二天,将logstash的配置改为nginx-YYYY.MM,重启
3.如果索引只保留10天,在10天候的某天,将kibana的配置改为nginx-YYYY.MM
缺点:第二步和第三步需要手工,可以写crontab定时任务
我们不希望用户(Kibaba的使用者)感觉到任何变化,更不能让使用者感觉到数据的丢失。
到此,关于"Elasticsearch索引别名怎么创建"的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注网站,小编会继续努力为大家带来更多实用的文章!