ElasticSearch - 滚动索引的别名自动更新

时间:2016-06-07 21:55:55

标签: elasticsearch

我定义了以下滚动索引:

POST /_aliases
{
  "actions": [
    {
      "add": {
        "index": "elmah_*",
        "alias": "elmah_all"
      }
    }
  ]
}

今天效果很好,它收集了我所有现有月度滚动指数。问题是,当索引滚动到新的月份时,它会自动生成elmah_2016_06的新索引,但我的别名不会获取此新索引。每个月我都需要通过运行这个来更新我的别名:

POST /_aliases
{
  "actions": [
    {
      "add": {
        "index": "elmah_2016-06",
        "alias": "elmah_all"
      }
    }
  ]
}

有没有办法让ES自动选择它?

2 个答案:

答案 0 :(得分:1)

是的,你可以使用模板。

PUT /_template/my_elmah_template
{
  "template" : "elmah_*",
  "alias" : {
    "elmah_all" : { }
  }
}

空对象是必要的恶,因为JSON需要field : value

每当创建匹配的索引(基于template参数)时,它就会自动将模板应用于它。在这种情况下,模板唯一要做的就是为它添加一个别名。

您也可以use a template to set settings and mappings

答案 1 :(得分:1)

pickypg提供的答案是正确的,但是有一个小错误。应为"aliases",如下所示:

   PUT /_template/my_elmah_template
   {
       "template" : "elmah_*",
       "aliases" : {
             "elmah_all" : { }
       }
   }