ES自治索引功能测试与介绍

2023-11-13 15:18:07 浏览数 (3)

ES集群配置

2核4G 2热2温节点

写入速度

1500条/s写入

每条2000词以上

动态滚动功能

动态滚动重要依据有两个,滚动周期和索引大小,其中之一满足条件后会立即滚动。

随机刷新功能

开启后默认设置是不刷新

高频写入时

1500条/s写入, 在写入数据doc数量2w,数据量在6-700MB间时进行落盘刷新。

低频写入时

10条/s写入速度,在写入630Mb数据,9.7k条文档时刷新

写入部分数据后停止

在上一次刷新后,写入46MB,6600条数据后停止。5-6分钟后会进行刷新。

综合来说,随机刷新功能通常情况下不建议开启,数据落盘慢,不适合即写即查。

在长时间有大量数据写入且对即时查询要求低的情况下可以开启,落盘次数的减少有利于数据写入。

故障自动转移功能

自治索引在单点故障时会对索引进行滚动,避免阻塞写入。

  1. 持续不断对3号索引写入(写入速度几千文档/s)

当前正在写入的3号后备索引大小3.48G,文档数323550

2. 手动下线节点,重试写程序后,此时集群red,大部分写入请求被拒绝,成功写入数据在5%以下。

3. 15分钟后有新的后备索引滚动产生,此时3号索引仅4.37G数据,新增0.9G数据,新的4号索引2分钟新增的数据量就超过了。

结论:自治索引单点故障场景下,会拒绝大部分写入请求,导致大量写入失败。直到新索引被滚动出来,写入恢复正常。

发生节点故障时,滚动出新的自治索引所需要的时间默认是5分钟。

时序裁剪

时序裁剪功能默认关闭,需要手动开启。

代码语言:javascript复制
PUT _cluster/settings
{
  "persistent":{
     "action.search.pre_filter.enabled": true
  },
  "transient":{
     "action.search.pre_filter.enabled": true
  }
}

使用时序裁剪功能需要使用range查询指定时间范围,时序裁剪是分片级别的,每个分片根据包含的数据会有个时间范围,时序裁剪时只查询范围重叠的后备索引分片以及最新的后备索引

代码语言:javascript复制
GET /test/_search
{
    "query" : {
        "constant_score" : {
            "filter" : {
                "range" : {
                    "@timestamp" : {
                        "gte" : "2023-08-24T11:47:26.565989Z",
                        "lt"  : "2023-08-24T11:48:26.565989Z"
                    }
                }
            }
        }
    }
}
  1. 时序裁剪会带上正在写的那个后备索引,也就是最新的后备索引
  2. 观测方式

(1)查询后返回结果的skipped

(2)让查询日志全部成为慢日志,在控制台观察慢日志

代码语言:javascript复制
PUT test/_settings
{
"index.indexing.slowlog.threshold.index.debug" : "0ms",
"index.indexing.slowlog.threshold.index.info" : "0ms",
"index.indexing.slowlog.threshold.index.warn" : "0ms",
"index.search.slowlog.threshold.fetch.debug" : "0ms",
"index.search.slowlog.threshold.fetch.info" : "0ms",
"index.search.slowlog.threshold.fetch.warn" : "0ms",
"index.search.slowlog.threshold.query.debug" : "0ms",
"index.search.slowlog.threshold.query.info" : "0ms",
"index.search.slowlog.threshold.query.warn" : "0s"
}

可以看到时序裁剪是按分片进行时间过滤,决定是否查询的

另外,sql查询也能触发时序裁剪,sql的时间过滤会被ES转换为range过滤

我正在参与2023腾讯技术创作特训营第三期有奖征文,组队打卡瓜分大奖!

0 人点赞