es官方默认限制索引查询最多只能查询10000条数据,查询第10001条数据开始就会报错,如下示例所示:
但是很多时候10000数据不能满足项目的需求,所以我们就要解除这个限制。解决办法主要有以下几种:
【方式一】(修改完配置文件,需要重启集群中的 ES 服务)
修改Elasticsearch 集群中的 配置文件 config/elasticsearch.yml,在配置文件最后增加一行,如下:
max_result_window: 200000000
【方式二】针对索引解除限制
针对所有索引解除限制:
PUT _all/_settings
{"index.max_result_window":200000
}
_all表示所有索引,针对单个索引的话修改成索引名称即可。
在创建索引时指定配置:
"settings":{"index":{"max_result_window": 500000}}
温馨提示:有可能修改完之后,通过api查询回来的totalhits还是只有10000条,解决如下 :
- 在查询时候把 track_total_hits 设置为 true。
track_total_hits 设置为false禁用跟踪匹配查询的总点击次数,设置为true就会返回真实的命中条数。
java 代码在构建条件时候加上:
searchSourceBuilder.trackTotalHits(true);
kibana 查询:
GET 索引名/_search
{"query": {"match_all": {}},"track_total_hits":true
}