Elasticsearch使用match_all查询未指定size时仅返回部分文档问题
核心原因
Elasticsearch 的搜索API默认采用分页返回机制,不会直接返回全量匹配结果,具体规则如下:
- 原生Elasticsearch服务端默认配置下,未显式指定
size参数时,仅返回前10条匹配文档,from参数默认值为0,即默认返回第0-9位的结果。 - 你首次查询仅返回5条,是因为你使用的封装客户端
elasticWrapper在初始化时自定义了默认size为5,覆盖了Elasticsearch的原生默认值。
当你显式指定size: 250时,相当于明确告知Elasticsearch返回前250条匹配结果,正好覆盖了你索引内所有的标签数据,因此可以拿到全部250条记录。
相关注意点
- Elasticsearch 原生存在分页深度限制:
from + size的总和默认不能超过10000,如果你后续需要查询超过1万条的全量数据,不要直接把size设为极大值,建议使用scroll或search_after接口实现全量拉取。 - 如果你需要修改默认返回条数,可以在客户端初始化参数或者索引级别的配置中统一调整,无需每次查询都手动指定
size。
内容的提问来源于stack exchange,提问作者Rafiq
相关产品推荐
相关产品推荐

