一、引言

在使用es进行数据查询时,由于es官方默认限制了索引一次性最多只能查询10000条数据,这其实是es的一种保护机制,那么很多时候我们需要突破这种限制,例如需要进入数据同步的场景,则需要查询全部的数据,如何处理呢?

二、解决方案

方案1:在设置索引属性时解除索引最大查询数的限制

put _all/_settings
{         
"index.max_result_window":200000
}

_all表示所有索引,针对单个索引的话修改成索引名称即可

方案2::在创建索引的时候加上

"settings":{
        "index":{
              "max_result_window": 500000
      }
}

方案3:修改API调用时代码配置
通过以上的处理,我们发现,当我们项目中通过API操作ES时还是没有生效,还是只能查询前10000条,这时候需要在API中添加这样一行代码:

searchSourceBuilder.trackTotalHits(true);

通过上面方案,即可实现突破Es官方限制的只能查询前10000条的限制。

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐