10.ES滚动索引如何使用

2023-11-08 14:46:35 浏览数 (3)

索引滚动是一种管理索引的策略,用于优化性能和资源利用,特别是在处理大量数据时。当索引数据量逐渐增大时,可能会出现性能下降或资源压力过大的情况。为了避免这些问题,可以使用索引滚动策略来定期创建新的索引,并将数据从旧索引滚动(移动)到新索引。

创建一个有规律的索引名称

注意-后面必须是整数,这样ES才会给你递增

代码语言:javascript复制
PUT lglbc_rollover_log-0001
{
  "aliases": {
    "lglbc_rollover_log": {}
  }
}

为别名添加滚动条件

代码语言:javascript复制
POST lglbc_rollover_log/_rollover
{
  "conditions": {
    "max_age": "7d",
    "max_docs": 2,
    "max_size": "5gb"
  }
}

当前滚动的规则如下,满足任意条件即可

  • max_age:最长服务时间为7天
  • max_docs:文档数量限制为2
  • max_size:索引大小不超过5gb

执行之后,返回如下内容:

添加数据

代码语言:javascript复制
PUT lglbc_rollover_log/_doc/001
{
  "name":"登录",
  "api":"/login",
  "method":"post"
}

PUT lglbc_rollover_log/_doc/002
{
  "name":"登录",
  "api":"/login",
  "method":"post"
}

手动触发rollover条件

代码语言:javascript复制
POST lglbc_rollover_log/_rollover
{
  "conditions": {
    "max_age": "7d",
    "max_docs": 2,
    "max_size": "5gb"
  }
}

结果中返回了新索引的名称:lglbc_rollover_log-000002

我们验证下新的索引是否存在

代码语言:javascript复制
GET lglbc_rollover_log-000002

结果显示还没创建,因为还没满足条件,所以再添加一条数据

代码语言:javascript复制
PUT lglbc_rollover_log/_doc/003
{
  "name":"登录",
  "api":"/login",
  "method":"post"
}

再调用端点触发

代码语言:javascript复制
POST lglbc_rollover_log/_rollover
{
  "conditions": {
    "max_age": "7d",
    "max_docs": 2,
    "max_size": "5gb"
  }
}

发现已经返回了新的索引名称,并且索引lglbc_rollover_log-000002已经创建 ,并且已经返回了下一次的索引名称。

需要注意的是:ES并不在我们添加数据的时候校验这个规则,而是需要我们手动带着这个条件去触发,所以这个接口我们需要定时轮训调用,分割的是否精确取决于我们轮训的间隔。

0 人点赞