如何使用logstash在两个索引上创建别名?

时间:2015-04-29 10:39:50

标签: alias logstash logstash-grok elasticsearch

在我正在处理的集群中有两个主要索引,比如indexAindexB,但这两个索引每天都被索引,所以我只有indexA-{+YYYY.MM.dd}和{{ 1}}。

我想要的是拥有一个将indexB-{+YYYY.MM.dd}indexA-{+YYYY.MM.dd}聚集在一起并命名为indexB-{+YYYY.MM.dd}的别名。

有没有人知道如何使用logstash在一个别名中收集两个索引?

提前谢谢

1 个答案:

答案 0 :(得分:3)

据我所知,没有办法直接使用logstash。您可以使用elasticsearch API从外部程序执行此操作:http://www.elastic.co/guide/en/elasticsearch/reference/current/indices-aliases.html

例如:

curl -XPOST 'http://localhost:9200/_aliases' -d '
{
    "actions" : [
        { "add" : { "index" : "indexA-2015.01.01", "alias" : "alias-2015.01.01" } },
        { "add" : { "index" : "indexB-2015.01.01", "alias" : "alias-2015.01.01" } }
    ]
}'

另一个选项(不符合命名alias-yyyy.mm.dd的要求)是使用索引模板,在创建索引时自动添加别名。

请参阅http://www.elastic.co/guide/en/elasticsearch/reference/current/indices-templates.html

curl -XPUT localhost:9200/_template/add_alias_template -d '{
  "template" : "index*",
  "aliases" : {
    "alias" : {}
    }
  }
}'

这会将alias的别名添加到名为index *的每个索引。

然后,您可以针对别名执行所有查询。您可以在Kibana中将该别名设置为索引,事情就可以正常工作。