【问题标题】:ElasticSearch RollOver index - Why can't an alias point to multiple indices?ElasticSearch RollOver index - 为什么别名不能指向多个索引?
【发布时间】:2017-05-16 22:43:47
【问题描述】:

让我们来看看下面的场景。

我有一个别名 A1 指向索引 I1。现在,我想使用 ES 的翻转功能并创建索引 I2 并将别名指向 I1 和 I2。

我可以一直滚动并让我的别名 A1 指向最后 2 个索引或通常最后 'n' 个索引吗?

【问题讨论】:

  • 用简单的index-templates就可以实现啦!假设您有 2 个别名 A1 和 A2,其中 A1 指向最新索引,其他指向所有 I* 索引。这样A2 总是如您预期的那样指向多个索引。无论您期望使用 A1 做什么(如果它指向多个索引),您也可以使用 A2 实现相同的效果。希望你能理解这种细微的区别。如果您有其他想法,请告诉我们。

标签: elasticsearch indexing alias rollover


【解决方案1】:

您可以像这样将一个别名指向多个索引:

POST /_aliases
{
    "actions" : [
        { "add" : { "indices" : ["l1", "l2"], "alias" : "A1" } }
    ]
}

甚至将别名指向这样的通配符索引模式:

POST /_aliases
{
    "actions" : [
        { "add" : { "index" : "l*", "alias" : "A1" } }
    ]
}

编辑: 通过翻转,您只能将别名指向一个索引 - 最新索引。如果您想要一个指向最后 2 个索引、n 个索引或与模式 l* 匹配的所有索引的别名,则必须使用我上面显示的请求创建一个额外的别名。

编辑 2:如果我想在索引中维护 30 天的日志,我会这样做。我与将索引命名为“l1”和别名为“A1”保持一致。在前 30 天之后,将创建一个名为 l000002 的新索引(命名约定是增加最后一个索引的编号和长度为 6 的零填充),别名 A1 将指向索引 l000002。我会创建一个 second 别名来引用您最初想要的“l*”。

PUT /l1
{ "aliases": { "A1": {} } }


POST /A1/_rollover  
{ "conditions": { "max_age": "30d" } }

POST /_aliases
{
    "actions" : [
        { "add" : { "index" : "l*", "alias" : "A2" } }
    ]
}

【讨论】:

  • 我指的是翻转索引功能的情况。我知道我可以单独执行此操作。
  • 但我的问题是,为什么 RollOver 功能不能做到这一点? ES没有这样做有什么具体原因吗?
  • rollover的目的是引用最新的数据,所以rollover管理的别名只指向一个索引(最新的)。
  • 假设您总是在索引中维护最近 30 天的数据?您如何使用 RollOver 来做到这一点?
  • 您创建了另一个指向“I*”的索引 A2,这必须单独管理。我一直在寻找 ES 的一个功能,它可以始终保持最近 30 天的日志,它就像一个滑动窗口行为,而不是一个跳跃窗口。
猜你喜欢
  • 2016-04-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-07-01
  • 1970-01-01
相关资源
最近更新 更多