前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >ES自治索引功能测试与介绍

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

原创
作者头像
沈小翊
修改2023-11-13 15:18:07
2161
修改2023-11-13 15:18:07
举报
文章被收录于专栏:大数据生态大数据生态

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腾讯技术创作特训营第三期有奖征文,组队打卡瓜分大奖!

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • ES集群配置
  • 写入速度
  • 动态滚动功能
  • 随机刷新功能
  • 故障自动转移功能
  • 时序裁剪
相关产品与服务
Elasticsearch Service
腾讯云 Elasticsearch Service(ES)是云端全托管海量数据检索分析服务,拥有高性能自研内核,集成X-Pack。ES 支持通过自治索引、存算分离、集群巡检等特性轻松管理集群,也支持免运维、自动弹性、按需使用的 Serverless 模式。使用 ES 您可以高效构建信息检索、日志分析、运维监控等服务,它独特的向量检索还可助您构建基于语义、图像的AI深度应用。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档