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

How to create an alias on two indexes with logstash?

在我正在处理的集群中有两个主要索引,比方说 indexAindexB 但是这两个索引每天都会被索引所以通常我有 indexA-{+YYYY.MM.dd}indexB-{+YYYY.MM.dd}.

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

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

提前致谢

据我所知,没有办法直接用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 中将该别名设置为索引,一切正常。