You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spring Data集成Elasticsearch为何发送两次请求?

原因分析

这种两次请求的现象是Spring Data Elasticsearch的默认行为,具体逻辑如下:

  • 当你定义的查询方法返回类型为Page<T>(分页结果),或者需要获取查询结果的总命中数时,Spring Data Elasticsearch会自动拆分为两次请求:

    1. 第一次请求:发送"size": 0且"track_total_hits": 2147483647的查询,核心目的是精确统计符合条件的总文档数量。size:0表示不返回具体文档内容,只做计数;track_total_hits设为ES支持的最大值,是为了绕过ES默认的命中数统计限制(ES默认仅精确统计前10000条,超过后返回近似值),确保拿到准确的总条数。
    2. 第二次请求:携带"size": 103的查询,目的是获取实际的文档数据。这里的103是当前查询需要返回的文档总量(比如分页场景下的目标数据量,或是方法指定的返回条数),此时无需再统计总数,因此不会携带track_total_hits参数。
  • 若你不需要分页结果,仅需获取匹配的文档数据,可将查询方法的返回类型改为List<T>而非Page<T>,此时Spring Data Elasticsearch只会发送一次请求,直接获取数据而不单独统计总数。

内容的提问来源于stack exchange,提问作者Colin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.23 03:15:47