elasticsearch返回结果超过10000解决方法,elasticsearch查询结果总数上限调整

本文介绍了elasticsearch返回结果超过10000的解决办法,调整elasticsearch返回结果上限。

现象阐述

测试 elasticsearch版本 7.9.0

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

很多开发场景拿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就会返回真实的命中条数。

java代码修改

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, 转载请注明

上一篇 下一篇


推荐文章

评论
说点什么吧?

发表评论

取消回复
  最新文章