Elasticsearch索引别名怎么创建

45次阅读
没有评论

共计 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 小编会继续努力为大家带来更多实用的文章!

正文完
 
丸趣
版权声明:本站原创文章,由 丸趣 2023-08-16发表,共计2125字。
转载说明:除特殊说明外本站除技术相关以外文章皆由网络搜集发布,转载请注明出处。
评论(没有评论)