elasticsearch版本7.x如果查询的结果大于1w条,则在total上的总数只是返回1w,如果想要获取真实的总数
实战:
GET /mr_zcy/_count
{
"query": {
"wildcard": {
"systemAssignedTo": "*000*"
}
}
}
方法1: "track_total_hits": true
POST myindex/_search
{
"track_total_hits": true,
"query": {
"match_all": {
}
},
"size": 2
}
如果是要在java中进行跟踪真实的查询结果总数:searchSourceBuilder.trackTotalHits(true);
方法2:cat/count
GET _cat/count/kibana_sample_data_ecommerce?v
返回:
epoch timestamp count
1585910697 10:44:57 4675
cat count api的方式能够快速的返回某个索引下文档的数量,需要注意的是已经删除的文档即使还没有物理删除(merge)也不会统计。
使用cat count api我们也可以不指定索引,从而查询整个集群的文档数量。 GET _cat/count?v
方法3: _count (最简单)
GET myindex2/_count
{
"count" : 92266,
"_shards" : {
"total" : 3,
"successful" : 3,
"skipped" : 0,
"failed" : 0
}
}
方法4: GET _cat/indices
整个命令其实主要是用来查询索引相关的信息的,而这些信息里面包含文档的数量。 比如,
GET _cat/indices/kibana_sample_data_ecommerce?v
和cat count api不同的是,cat indices命令统计的文档数量是底层所有的文档数量,如果你不太明天,我举个例子。
我们新增一个测试的索引,使用nested嵌套文档,关于嵌套文档可以看看这篇文章,这里不详述了。
我们先用cat count api查询下,结果是1,然后用cat indices查询,发现结果是3。这是为什么呢?
这是因为cat indices是直接从lucene获取的这些信息,而我们之前的文章讲过nested类型的属性其实在lucene内部是独立的文档,只不过在ES这一层隐藏了这些细节。
方法5:聚合
GET /kibana_sample_data_ecommerce/_search
{
"size" : 0,
"aggs" : {
"my_count" : {
"value_count": {
"field" : "_id"
}
}
}
}
方法6:查看分片上的文档数量
有时候我们需要查看一个分片上文档数量,使用cat shards api可以做到。
GET _cat/shards/kibana_sample_data_ecommerce?v