如何在elasticsearch7中获取索引的项目计数?

时间:2019-05-21 12:19:09

标签: elasticsearch

使用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中的索引的确切总数?

2 个答案:

答案 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);