一、引言

在使用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

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐