使用elasticsearch 6.7时,
GET /indexName/_search
返回确切的索引总数:
"hits" : {
"total" : 1527325,
"max_score" : 1.0,
...}
但是在elasticsearch 7.0中
GET /indexName/_search
获取:
"hits" : {
"total" : {
"value" : 10000,
"relation" : "gte"
},
这意味着合计大于10000,那么如何获取7.0中的索引的确切总数?
答案 0 :(得分:0)
从ES 7.0.0开始,您需要使用track_total_hits
参数:
GET /indexName/_search?track_total_hits=true
如果要恢复与7之前的版本相同的格式(临时参数将在ES 8中删除),也可以添加rest_total_hits_as_int
参数:
GET /indexName/_search?track_total_hits=true&rest_total_hits_as_int=true
答案 1 :(得分:0)
对于使用Java rest api客户端的 ES 7.5.0 ,您可以使用
sourceBuilder.trackTotalHits(true);
使用源构建器准备搜索请求
SearchRequest searchRequest = new SearchRequest(index);
SearchSourceBuilder sourceBuilder = new SearchSourceBuilder();
sourceBuilder.query(queryBuilder);
sourceBuilder.sort(sortBuilder);
sourceBuilder.from(from);
sourceBuilder.size(size);
sourceBuilder.trackTotalHits(true);
searchRequest.source(sourceBuilder);
client.search(searchRequest,RequestOptions.DEFAULT);