es本身默认限制了查找的量为10000条,即 from + size <= 10000,
官方文档的建议是不要修改,太大会影响性能和效率,建议使用 scroll 来代替。
若超过10000则会报错:
解决方法:
在kibana中执行api,修改index的配置,解除索引最大查询数的限制:
# 修改ES中所有的index配置
PUT _all/_settings
{
"index":{
"max_result_window": 100000
}
}
# 修改ES中指定的index配置
PUT index_name/_settings
{
"index":{
"max_result_window": 100000
}
}
但是修改完之后,通过api查询回来的totalhits还是只有10000条,解决如下 :
在查询时候把 track_total_hits 设置为 true。
track_total_hits 设置为false禁用跟踪匹配查询的总点击次数
设置为true就会返回真实的命中条数。
java代码在构建条件时候加上:
searchSourceBuilder.trackTotalHits(true);
使用kibana查询时要加上:
GET 索引名/_search
{
"track_total_hits":true,
"query": {
"match_all": {}
}
}