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

wbrvyc0a  于 2022-11-02  发布在  ElasticSearch
关注(0)|答案(3)|浏览(381)

我定义了以下滚动索引:

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

这个功能现在很好用,它提取了我所有的现有月度滚动索引。问题是当索引滚动到月份时,它会自动生成新的索引elmah_2016_06,但是我的别名并没有提取这个新索引。每个月我都需要通过运行以下命令来更新别名:

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

有没有办法让ES自动拾取这个?

afdcj2ne

afdcj2ne1#

是的,你可以使用模板。

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

空对象是必要的,因为JSON需要field : value
只要创建了匹配的索引(基于template参数),它就会自动将模板应用到该索引。在这种情况下,模板所做的唯一事情就是向该索引添加别名。
您也可以use a template to set settings and mappings

af7jpaap

af7jpaap2#

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

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

n8ghc7c13#

ElasticSearch〉= 7.8

从Elasticsearch 7.8开始,引入了composable index templates,并且不再使用以前的模板语法(至少对于索引模板):

!旧版索引模板已过时,请改用可组合的模板。

#!使用了不推荐使用的字段[template],已替换为[index_patterns]
创建一个索引模板(名称为my-index-template),该模板自动将别名my-alias添加到与模式my-index-*匹配的新索引中,其语法如下:

PUT _index_template/my-index-template
{
  "index_patterns": ["my-index-*"],
  "template": {
    "aliases": {
      "my-alias": { }
    }
  }
}

与前面的语法一样,其行为是相同的:每当新索引与index_patterns参数中指定的模式(或 patterns,因为它可以是多个1)匹配时,模板将自动应用于该索引。
除了添加别名之外,可组合索引模板还可以用于其他操作,其中包括定义设置或Map,就像过去一样。

ElasticSearch〈7.8

为了完整起见,正如在现有答案中所描述的,在可组合索引模板出现之前的语法是:

PUT _template/my-index-template
{
    "template" : "my-index-*",
    "aliases" : {
        "my-alias" : { }
    }
}

相关问题