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

jhi*_*den 7 elasticsearch

我定义了以下滚动索引:

POST /_aliases
{
  "actions": [
    {
      "add": {
        "index": "elmah_*",
        "alias": "elmah_all"
      }
    }
  ]
}
Run Code Online (Sandbox Code Playgroud)

今天效果很好,它收集了我所有现有的每月滚动索引。问题是,当索引滚动到新的月份时,它会自动生成 的新索引elmah_2016_06,但是我的别名没有选择这个新索引。每个月我都需要通过运行以下命令来更新我的别名:

POST /_aliases
{
  "actions": [
    {
      "add": {
        "index": "elmah_2016-06",
        "alias": "elmah_all"
      }
    }
  ]
}
Run Code Online (Sandbox Code Playgroud)

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

pic*_*ypg 7

是的,您可以使用模板。

PUT /_template/my_elmah_template
{
  "template" : "elmah_*",
  "alias" : {
    "elmah_all" : { }
  }
}
Run Code Online (Sandbox Code Playgroud)

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

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

您还可以使用模板来设置设置和映射


小智 5

pickypg 提供的答案是正确的,但有一个小错误。应该是"aliases"这样的:

PUT /_template/my_elmah_template
{
    "template" : "elmah_*",
    "aliases" : {
        "elmah_all" : { }
    }
}
Run Code Online (Sandbox Code Playgroud)