es解决只能默认查询10000条数据方案
在使用es进行数据查询时,由于es官方默认限制了索引一次性最多只能查询10000条数据,这其实是es的一种保护机制,那么很多时候我们需要突破这种限制,例如需要进入数据同步的场景,则需要查询全部的数据,如何处理呢?通过上面方案,即可实现突破Es官方限制的只能查询前10000条的限制。_all表示所有索引,针对单个索引的话修改成索引名称即可。
·
一、引言
在使用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条的限制。
更多推荐
已为社区贡献9条内容
所有评论(0)