在弹性搜索模板运行时中为索引添加别名

时间:2018-03-28 12:38:03

标签: elasticsearch

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

例如:我的索引是:

client1_01_18_user_location/user_locationclient1_02_18_user_location/user_location

client2_01_18_user_location/user_locationclient2_02_18_user_location/user_location

1月份的数据转到第1个索引,2月份的数据转到第2个索引。我希望根据为哪个客户端插入数据来创建别名client1_ulclient2_ul

我如何实现这一目标?

1 个答案:

答案 0 :(得分: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自动添加。