2

我有一个弹性索引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 端共同配置它,而不是在其他任何地方。

4

2 回答 2

2

您快到了。反之亦然,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" } }
    ]
}
于 2020-03-31T07:42:19.977 回答
1

不太确定这是否适用于您的情况,但如果您从头开始,可能的解决方案可能是使用索引模板。

PUT _index_template/transactions-internal
{
  "priority": 1,
  "template": {
    "aliases": {
      "transactions-internal": {}
    }
  },
  "index_patterns": [
    "transactions-*-internal"
  ],
  "composed_of": []
}

由于我对弹性很陌生,我不知道这个模板是否可以应用于现有索引。但是这种方法适用于 v 7.12.1 中的新索引

于 2021-05-19T08:42:16.023 回答