Elasticsearch是否可以为将来的索引使用索引模式的别名?

时间:2020-10-16 10:46:26

标签: elasticsearch

我知道我可以通过以下方式为现有索引添加别名:

POST /_aliases
{
    "actions" : [
        { "add" : { "index" : "my-index-000001", "alias" : "alias1" } }
    ]
}

或(结果似乎相等)

PUT /my-index-000001/_alias/alias1

但是还可以通过模式创建别名,以便新创建的索引已经带有别名吗?

所以当我这样做时:

POST /_aliases
    {
        "actions" : [
            { "add" : { "index" : "my-index-*", "alias" : "alias1" } }
        ]
    }

将来创建的所有匹配模式 my-index- *的索引都将自动带有别名 alias1

2 个答案:

答案 0 :(得分:1)

是的,您可以使用index template来做到这一点:

PUT _index_template/my_template
{
  "index_patterns": ["my-index-*"],
  "template": {
    "settings": {
      "number_of_shards": 1
    },
    "aliases": {
      "alias1": { }
    },
    "mappings": {
      "properties": {
        ...
      }
    }
  }
}

请注意,如果您使用的是before 7.8版,则语法略有不同:

PUT _template/my_template
{
  "index_patterns": ["my-index-*"],
  "settings": {
    "number_of_shards": 1
  },
  "aliases": {
    "alias1": { }
  },
  "mappings": {
    "properties": {
      ...
    }
  }
}

答案 1 :(得分:0)

是的,有可能。您可以看到此link。您需要定义一个索引模板。

PUT _template/template_1
{
    "index_patterns" : ["te*"],
    "settings" : {
        "number_of_shards" : 1
    },
    "aliases" : {
        "alias1" : {}
        
    }
}