共计 2125 个字符,预计需要花费 6 分钟才能阅读完成。
这篇文章主要介绍“Elasticsearch 索引别名怎么创建”,在日常操作中,相信很多人在 Elasticsearch 索引别名怎么创建问题上存在疑惑,丸趣 TV 小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Elasticsearch 索引别名怎么创建”的疑惑有所帮助!接下来,请跟着丸趣 TV 小编一起来学习吧!
一、
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 索引别名怎么创建”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注丸趣 TV 网站,丸趣 TV 小编会继续努力为大家带来更多实用的文章!