news 2026/5/6 18:30:12

使用 Elastic Cloud Serverless 扩展批量索引

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
使用 Elastic Cloud Serverless 扩展批量索引

作者:来自 Elastic json

Elastic Cloud Serverless ( ECS ) 的 split-tier 架构设计将 indexing 任务与 search 分离。这意味着 indexing 和 search 可以根据系统的用户需求分别扩展。在后端,每个 tier 都有专用的 node pools,用于相应地管理计算资源需求。对于 indexing tier,当 indexing 负载(例如 indexing pressure、 CPU 和 memory 利用率、 write queue 饱和度)增加时,规模会以阶梯式扩展;当需求缓解时则会缩减。对于 search,tier 会根据摄入的数据量增长,并且可选地根据 search 负载扩展。

最棒的是,这个可扩展系统不需要最终用户进行管理。平台由 Elastic 完全托管。以下是一些在 Serverless 平台上优化 indexing 性能的建议。

  1. 新的 Serverless projects 从尽可能少的计算资源开始。这意味着只有在需要时才会消耗计算资源。
  2. 目标是将 bulk 延迟的中位数保持在 200 到 1000 毫秒之间。由于计划性的 object store flush,发送到 Serverless 的 bulk 请求最小响应时间为 200ms。这些 flush 是确保数据被正确持久化到 object storage 并可用于 search 的一部分。
  3. 为了获得高摄入性能,需要调优 bulk size 和 workers。可以从单个客户端的单个 bulk 请求响应时间开始测试,然后逐步增加。请确保在运行实验之前已加载所有 index templates。
  4. 如果 index 大小和规模是一个问题,请使用 data streams 而不是标准 indices。data streams 与标准 indices 的不同之处在于它们需要 @timestamp 字段,并由 data lifecycle policies 管理。在 serverless 中,data lifecycle 仅意味着分配数据保留期。data streams 最初是为高吞吐的 observability 和 security 工作负载设计的,具备超越标准 indices 的扩展能力,能够充分利用 Serverless 的扩展特性。
  5. 通过分散客户端工作负载来触发扩展。来自更多客户端的更多请求会促使你的 projects 扩展。从零开始扩展时,预计会以 429 的形式出现 backpressure。无论你是每天 1TB 还是 1PB 的用户,project 都需要逐步升温,并稳定到你的工作负载水平。
  6. 使用 Elasticsearch Rally 对摄入升温阶段和运行时的 indexing 吞吐量进行基准测试,可以使用你自己数据的样本,或者使用 Rally tracks repo 中的预定义工作负载。

我整理了一个脚本,用于实验不同的 bulk 请求大小和客户端数量。要使用它,请先安装 Astral uv,在脚本顶部设置标注的配置常量,然后运行: ./async_bulk.py。

脚本在完成后会输出一些统计信息:

Starting indexing with 24 processes... Documents per process: 4,166,666 Workers per process: 75 ================================================== Bulk Indexing Statistics (Multi-Process) ================================================== Number of processes: 24 Total documents indexed: 99,999,984 Total bulk requests: 200016 Elapsed time: 237.26 seconds Indexing rate: 421,480.34 docs/sec Max queue depth: 10,000 documents Min bulk response time: 204.97 ms Median bulk response time: 1285.85 ms Max bulk response time: 4273.16 ms ==================================================

如果使用 data stream:

PUT /_index_template/advent_cal_ds_template { "index_patterns": ["advent-ds*"], "data_stream": {}, "template": { "mappings": { "properties": { "@timestamp": { "type": "date" } } } } } PUT /_data_stream/advent-ds

那么就在脚本中将 index name 设为 advent-ds。尽情使用吧!

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/5 4:55:09

SQLFluff终极指南:5步实现零错误SQL代码规范

还在为团队SQL代码风格混乱而头疼吗?每次Code Review都要花大量时间纠正缩进和大小写?SQLFluff作为一款模块化SQL检查工具,能帮你彻底解决这些问题。让我们一起来探索如何用这个神奇工具提升开发效率! 【免费下载链接】sqlfluff A…

作者头像 李华
网站建设 2026/5/3 8:11:39

5分钟彻底告别SQL代码混乱:智能检查工具实战指南

5分钟彻底告别SQL代码混乱:智能检查工具实战指南 【免费下载链接】sqlfluff A modular SQL linter and auto-formatter with support for multiple dialects and templated code. 项目地址: https://gitcode.com/GitHub_Trending/sq/sqlfluff 🔍 …

作者头像 李华
网站建设 2026/5/4 4:35:55

ESP32 GPIO与外部传感器连接:新手接线指南

ESP32与传感器实战接线:从零开始的硬件避坑指南你有没有遇到过这样的情况?代码写得没问题,库也装对了,可DHT11就是读不出数据;或者一接上超声波模块,ESP32就反复重启……别急,问题很可能不在程序…

作者头像 李华
网站建设 2026/5/4 18:51:22

SoundCloud音乐下载终极指南:用scdl轻松保存你喜欢的音乐

SoundCloud音乐下载终极指南:用scdl轻松保存你喜欢的音乐 【免费下载链接】scdl Soundcloud Music Downloader 项目地址: https://gitcode.com/gh_mirrors/sc/scdl 还在为无法离线收听SoundCloud上的优质音乐而烦恼吗?scdl作为一款强大的SoundClo…

作者头像 李华
网站建设 2026/5/1 8:46:10

OpenCAMLib:CNC加工路径生成的终极解决方案

OpenCAMLib:CNC加工路径生成的终极解决方案 【免费下载链接】opencamlib open source computer aided manufacturing algorithms library 项目地址: https://gitcode.com/gh_mirrors/op/opencamlib 在当今数字化制造领域,OpenCAMLib(开…

作者头像 李华
网站建设 2026/5/1 9:30:15

Rete.js可视化编程终极指南:从零构建专业级前端开发工具

Rete.js可视化编程终极指南:从零构建专业级前端开发工具 【免费下载链接】rete JavaScript framework for visual programming 项目地址: https://gitcode.com/gh_mirrors/re/rete Rete.js是一个功能强大的JavaScript框架,专门用于创建可视化编程…

作者头像 李华