现象阐述
测试 elasticsearch版本 7.9.0
Elasticsearch官方默认限制索引查询最多只能查询10000条数据,查询第10001条数据开始就会报错:
很多开发场景拿elasticsearch当做数据库使用,需要返回表的总数量,虽然这种场景不建议这样使用,但es其实是可以支持的(拿es当数据库用的 基本是小白或者菜鸟级的开发)。
产生上述报错的原因是:
elasticsearch中max_result_window有上限限制:默认10000。
解决办法
首先调整索引的查询窗口是上限:
PUT indexname/_settings
{
"index.max_result_window": 500000
}
改完之后 发现通过api查询回来的totalhits还是只有10000条?
在查询时候把 track_total_hits 设置为true。
track_total_hits 设置为false禁用跟踪匹配查询的总点击次数
设置为true就会返回真实的命中条数。
rest查询实例
GET indexname/_search
{
"query": {
"match_all": {}
},
"track_total_hits": true
}
备注:es默认最大返回数是10000,支持的最大返回数是2^31-1,也就是2147483647,不建议设置太大,query数据时size不要太大,总得考虑内存消耗的,设置了返回max后可以用分页获取, from:num_a, size:num_b,获取的就是num_a+1到num_a+num_b的数据。,脑残们放弃这种方式吧。
声明:本文原创地址:https://www.catroom.com.cn/article/473, 转载请注明
发表评论
取消回复