您的位置首页 >人工智能 >

ES|QL 新增异步任务列表与查询 API,大数据长查询不用盲等

ES|QL 在新版本上线了异步任务列表、任务查询配套 API,搭配原有异步查询接口,解决了之前跑超大范围日志、跨集群、冻结索引查询时只能死等、没法批量查看任务状态的痛点,提交慢查询之后服务端会返回唯一任务 ID,你可以主动调用列表接口拿到全部异步任务,再单独查单个任务进度、结果,也能随时停止、删除任务,不用写循环轮询猜什么时候跑完,适合运维、数据分析做海量数据聚合、长时间统计分析,避免前端超时、连接断开,把长查询的可控性拉满。

一、ES|QL 异步查询之前需要盲等,痛点集中的原因

1. 同步查询对大数据集很不友好

ES|QL 同步接口适合小数据集,一旦扫描跨多索引、冻结索引、多集群 CCS 数据,查询耗时会拉长,很容易出现 HTTP 连接超时,前端、脚本只能卡死等待,中间不知道任务跑没跑、卡在哪一步。

2. 早期只有提交 + 单任务查询,没有任务清单能力

之前 ES|QL 异步接口只能提交任务,拿着 ID 去查单个任务,如果你同时发起十几个、几十个分析任务,没有统一列表,没法一次性看所有任务是运行中、成功还是失败,任务多了很难管理。

3. 业务脚本只能自己写轮询逻辑,容易写崩

很多工程师只能自己写循环不停 GET 任务接口,还要处理超时、重试、异常,轮询频率不好控制,太频繁加重集群压力,间隔太长又拿到结果太晚,代码维护成本高。

4. 长查询任务没法批量管控

之前没法一键查看自己名下所有异步任务,废弃、卡住的任务容易留在后台持续占用资源,需要手动记录每一个 task id,漏了就会浪费算力。

二、ES|QL 异步任务全套 API 清单与作用

  • 提交异步查询:POST /_query/async,提交 ES|QL 语句,超时没跑完返回 task id
  • 查询单个异步任务:GET /_query/async/{id},查看运行状态、进度、结果
  • 列出异步任务 API:获取当前用户名下全部异步 ES|QL 任务,批量查看状态
  • 停止异步任务:POST /_query/async/{id}/stop,中断正在执行的查询,返回已算出的部分结果
  • 删除异步任务:DELETE /_query/async/{id},终止任务、清理保存的结果数据

三、ES|QL 异步任务完整使用步骤

  1. 提交 ES|QL 异步查询,设置 wait_for_completion_timeout,超时后拿到任务 ID;
  2. 调用列出异步任务 API,批量查看所有任务的 ID、is_running、提交时间、状态;
  3. 挑选需要跟进的任务 ID,调用单任务查询 API,轮询获取执行进度;
  4. 任务完成后读取结果;如果任务卡住、不再需要,调用 stop 接口中断,或者直接 delete 清理;
  5. 业务侧不用自己维护 task id 清单,每次拉取列表即可,简化调度代码。

四、同步查询和新版异步任务模式对比简表

模式适用场景是否需要盲等任务管理能力风险点
ESQL 同步查询小索引、快速统计是,连接挂掉直接失败无,没有任务记录长查询超时、连接断开
ESQL 异步(旧版,仅单任务查询)单条慢查询不用盲等,但需要自己记 ID只能单个查询,无列表任务多了管理混乱
ESQL 异步 + 列表查询 API批量大数据分析、跨集群、冻结索引不用盲等,统一看板管理批量列出、状态筛选、停止删除任务结果会占用集群存储,不用及时清理

五、整体总结

ES|QL 新增列出和查询异步任务 API,本质是补齐了长查询的任务运维能力。同步接口适合快查询,而跨集群、海量日志、冻结索引这类耗时 ES|QL 分析,现在可以异步提交、拉取任务清单、跟踪进度,不用客户端死等连接,也不用自己维护一堆任务 ID。这套 API 上线之后,数据分析平台、运维后台很容易做一个任务管理面板,统一管控所有 ES|QL 慢查询,减少无效算力占用,降低前端超时报错。

【常见问题】

问题 1:ES|QL 有了列出和查询异步任务的 API,还需要自己写轮询盲等吗?

回答 1:不需要盲等。提交异步 ES|QL 查询拿到任务 ID,你可以调用列出异步任务 API 批量看任务状态,再单独查询指定任务进度,业务脚本可以按需拉取状态,不用一直阻塞等待返回结果。

问题 2:ES|QL 列出异步任务 API,可以看到别人提交的异步查询任务吗?

回答 2:不可以,ES|QL 异步任务和提交用户绑定,列出异步任务 API 只能返回当前认证用户名下提交的异步 ES|QL 任务,没有权限查看其他用户的任务,和单任务查询权限保持一致。

问题 3:ES|QL 异步任务 API,任务跑完之后结果会一直保存吗?

回答 3:不会永久保存,提交时 keep_on_completion 参数控制是否保留结果,超时或者手动调用删除接口会清理;长时间不用的异步 ES|QL 任务建议及时删除,避免占用集群存储空间。

【参考资料】

[2026-11-10](ES|QL|有了列出和查询异步任务的 API,不用再盲等)Elastic 中文社区

[2026-10-28](Elasticsearch 8.19 ES|QL 异步任务管理 API 更新)Elastic 官方文档

[2026-10-15](ES|QL 异步查询任务列表接口发布,优化长查询调度)InfoQ

【免责声明】

本文仅为 ES|QL 异步任务 API 技术资讯解读,不构成线上生产直接落地建议;该 API 可用性、权限、参数随 Elasticsearch 版本变化,部分能力需要 8.18/8.19 及以上版本;异步查询会占用集群算力与存储,线上使用需要做好任务清理、超时管控;具体参数、权限规则以 Elastic 官方最新文档为准。

今日大家都在搜的词: