首页 > 解决方案 > 弹性索引的通配符别名

问题描述

我有一个弹性索引transactions-internal,并希望transactions-([a-z]+)-internal使用别名将所有名称都指向该索引,所以所有请求都喜欢

GET /transactions-a-internal/_search
GET /transactions-b-internal/_search
GET /transactions-c-internal/_search
...
etc

应该给出相同的结果

GET /transactions-internal/_search

我试过了

POST /transactions-internal/_alias/transactions-*-internal

但它回来了

Invalid alias name [...] must not contain the following characters [ , \", *, \\, <, |, ,, >, /, ?]

有什么“聪明”的解决方案吗?我强烈希望在 Elastic 端共同配置它,而不是在其他任何地方。

标签: elasticsearchelastic-stackelasticsearch-indices

解决方案


您快到了。反之亦然,POST /<index>/_alias/<alias>

POST /transactions-*-internal/_alias/transactions-internal

更新:

如果您想反过来,则可以使用以下内容(请注意,别名不能包含通配符):

POST /_aliases
{
    "actions" : [
        { "add" : { "index" : "transactions-internal", "alias" : "transactions-a-internal" } },
        { "add" : { "index" : "transactions-internal", "alias" : "transactions-b-internal" } },
        { "add" : { "index" : "transactions-internal", "alias" : "transactions-c-internal" } }
    ]
}

推荐阅读