在 Elasticsearch 中,索引别名(Index Alias)是一个非常有用的功能,它允许你为一个或多个索引分配一个更友好、更易于理解的名称。别名不是实际的索引,而是一个指向一个或多个索引的标识符。通过使用别名,你可以隐藏实际索引的名称,使得在应用程序中使用更具有可读性的名称,同时还能提供灵活性和便利性。
别名的创建
先创建两个普通索引
代码语言:javascript复制PUT lglbc_log001/_doc/1
{
"name":"登录",
"api":"/login",
"method":"post"
}
PUT lglbc_log002/_doc/2
{
"name":"注销",
"api":"/logout",
"method":"post"
}
执行创建别名请求
代码语言:javascript复制POST /_aliases
{
"actions": [
{
"add": {
"index": "lglbc_log001",
"alias": "lglbc_log"
}
},
{
"add": {
"index": "lglbc_log002",
"alias": "lglbc_log"
}
}
]
}
按照别名搜索
代码语言:javascript复制GET lglbc_log/_search
在别名中实现数据过滤
如果你想在查询别名时,提前加上过滤条件,那么你可以这么做: 先塞一条GET 请求的数据:
代码语言:javascript复制PUT lglbc_log002/_doc/3
{
"name":"用户列表",
"api":"/user/list",
"method":"get"
}
修改过滤器,使其支持method:post过滤
代码语言:javascript复制POST _aliases
{
"actions": [
{
"add": {
"index": "lglbc_log001",
"alias": "lglbc_log",
"filter": {
"term": {
"method": "post"
}
}
}
},
{
"add": {
"index": "lglbc_log002",
"alias": "lglbc_log",
"filter": {
"term": {
"method": "post"
}
}
}
}
]
}
再次查询,发现刚才添加的数据被过滤掉了,说明过滤器有作用了
查看别名
代码语言:javascript复制GET _alias/lglbc_log
删除别名
代码语言:javascript复制POST _aliases
{
"actions": [
{
"remove": {
"index": "lglbc_log001",
"alias": "lglbc_log"
}
}
]
}