【问题标题】:Adding alias to index in elastic search template runtime在弹性搜索模板运行时为索引添加别名
【发布时间】:2018-03-29 04:22:49
【问题描述】:

我想给 elasticsearch 模板中的索引添加别名,但别名并不总是固定的。它以客户端 ID 开头。由于数据的大小,我们分别为每个客户端创建月度索引,我想要一个查询所有月度索引中的数据。但是,因为每个客户端都有不同的索引,所以别名必须以 clientId 开头。我怎样才能做到这一点?

例如:我的索引是:

client1_01_18_user_location/user_location, client1_02_18_user_location/user_location

client2_01_18_user_location/user_location, client2_02_18_user_location/user_location

在每个客户的情况下,1 月份的数据进入第 1 个索引,2 月份的数据进入第 2 个索引。我想创建一个别名client1_ulclient2_ul,基于要为其插入数据的客户端。

我如何做到这一点?

【问题讨论】:

  • 我没有完全理解你的问题。您可以使用PUT /client1_01_18_user_location/_alias/client1_ul 轻松地为现有索引创建别名。这种方法有问题吗?
  • 没有。但是因为这些是月度索引,并且我不希望有人在数据写入索引之前关注创建月度索引,所以我想注册一个模板,该模板可以随时使用预定义的映射和别名创建索引,写入数据时找不到索引。

标签: elasticsearch


【解决方案1】:

你可以用这样的 POST 来解决:

POST /_aliases
{
    "actions" : [
        { "add" : { "index" : "client1*", "alias" : "client1_ul" } }
    ]
}

此调用会将表单client1*的所有索引添加到别名client1_ul,可用于查询所有月份。

每个用户都需要一个 POST。

否则,您可以为每个客户端使用索引template,如果您添加别名时并非所有索引都存在。模板可以提供别名:

PUT _template/template_1
{
    "index_patterns" : ["client1*"],
    "mappings" : {
        ... optional
    },
    "aliases" : {
        "client1_ul" : {}
    }
}

这样,别名将在索引创建时自动添加到每个索引中,由 elasticsearch 自动添加。

【讨论】:

  • 但是系统里还有其他的索引,都是以client1_开头的,不是月度索引,所以不能这样。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-01-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-08-17
相关资源
最近更新 更多