9.ES别名你用对了么?

2023-10-30 16:23:56 浏览数 (3)

在 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"
      }
    }
  ]
}

0 人点赞