栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 前沿技术 > 大数据 > 大数据系统

Elasticsearch解决只能查询10000条数据以及查询的total为10000条的解决方案

Elasticsearch解决只能查询10000条数据以及查询的total为10000条的解决方案

Elasticsearch官方默认限制索引查询最多只能查询10000条数据,查询第10001条数据开始就会报错:

Result window is too large, from + size must be less than or equal to

但是很多时候10000数据不能满足项目的需求,所以我们就要解除这个限制。

解决方案:
第一种办法:

在restful请求时,解除索引最大查询数的限制

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

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

第二种办法:

在创建索引的时候加上

"settings":{
		"index":{
			"max_result_window": 10000000000
				}
			}

但是修改完之后,通过api查询回来的totalhits还是只有10000条???

解决如下 :

在查询时候把 track_total_hits 设置为 true。

track_total_hits 设置为false禁用跟踪匹配查询的总点击次数

设置为true就会返回真实的命中条数。

java代码在构建条件时候加上:

searchSourceBuilder.trackTotalHits(true);

rest请求查询时:

GET 索引名/_search
	{
	 "query": {
		 "match_all": {}
			 },
		 "track_total_hits":true
	}

elasticsearch中max_result_window有上限限制: 原因分析

es对from + size的大小进行限制,必须小于等于10000。



解决方案
  • 在业务中限制分页大小,使from+size<=10000;
  • 动态更改索引设置,为max_result_window参数赋值足够大的值;

es默认最大返回数是10000,支持的最大返回数是2^31-1,也就是2147483647,不建议设置太大,query数据时size不要太大,总得考虑内存消耗的,设置了返回max后可以用分页获取, from:num_a, size:num_b,获取的就是num_a+1到num_a+num_b的数据。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/281513.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号