1、引言

有人可能觉得,查看文档数量不是很简单吗?直接

GET /_cat/count/index_name?v

不就可以了吗。

事实上远不止这么简单,比如嵌套文档的情况等。相信你看了我这篇文章之后你会感叹原来统计文档有这么多讲究啊。

2、正文

cat/count

首先是最常用的的方式,也是一种快速查询文档的优先推荐方式,cat count api我们使用kibana自带的电商索引来实验。

GET _cat/count/kibana_sample_data_ecommerce?v

返回,

epoch      timestamp count
1585910697 10:44:57  4675

cat count api的方式能够快速的返回某个索引下文档的数量,需要注意的是已经删除的文档即使还没有物理删除(merge)也不会统计。我们可以来做个实验,任意删除一个文档,然后再次查询下。

DELETE kibana_sample_data_ecommerce/_doc/VJz1f28BdseAsPClo7bC

再次查询发现少了一条。

另外,使用cat count api我们也可以不指定索引,从而查询整个集群的文档数量。

GET _cat/count?v

GET _cat/indices

整个命令其实主要是用来查询索引相关的信息的,而这些信息里面包含文档的数量。 比如,

GET _cat/indices/kibana_sample_data_ecommerce?v

查询的结果如下,

docs.count列就是文档的数量。

和cat count api不同的是,cat indices命令统计的文档数量是底层所有的文档数量,如果你不太明天,我举个例子。
我们新增一个测试的索引,使用nested嵌套文档,关于嵌套文档可以看看这篇文章,这里不详述了。

ES系列之嵌套文档和父子文档

新建一个索引,然后插入一个文档。

PUT my_index
{"mappings": {"properties": {"user": {"type": "nested" }}}
}PUT my_index/_doc/1
{"group" : "fans","user" : [{"first" : "John","last" :  "Smith"},{"first" : "Alice","last" :  "White"}]
}

我们先用cat count api查询下,结果是1,然后用cat indices查询,发现结果是3。这是为什么呢?

这是因为cat indices是直接从lucene获取的这些信息,而我们之前的文章讲过nested类型的属性其实在lucene内部是独立的文档,只不过在ES这一层隐藏了这些细节。

使用search api

我们当然可以直接使用search去统计文档数量,只要不指定查询条件,然后查询结果中的total就是文档的总数量。

GET kibana_sample_data_ecommerce/_search
{"query": {"match_all": {}}
}

结果是(只显示部分),

  "hits" : {"total" : {"value" : 4673,"relation" : "eq"},"max_score" : 1.0,"hits" : [{

不过search api有个问题,这个total最大只会显示10000个,这个我就不举例子了。

这里我们可以进一步探讨一个问题,cat count api和search方式统计文档哪个效率高?我没有找到官方文档,不过大概也能推断出前者应该是更快一些,因为查询还要算分,排名这些操作,应该更耗时。

利用聚合统计文档

我们还可以利用ES的聚合函数统计文档数量,如下:

GET /kibana_sample_data_ecommerce/_search
{"size" : 0,"aggs" : {"my_count" : {"value_count": {"field" : "_id"}}}
}

结果是,

{"took" : 24,"timed_out" : false,"_shards" : {"total" : 1,"successful" : 1,"skipped" : 0,"failed" : 0},"hits" : {"total" : {"value" : 4672,"relation" : "eq"},"max_score" : null,"hits" : [ ]},"aggregations" : {"my_count" : {"value" : 4672}}
}

我们这里用了Value Count Aggregation 按字段统计文档数量。

查看分片上的文档数量

有时候我们需要查看一个分片上文档数量,使用cat shards api可以做到。

GET _cat/shards/kibana_sample_data_ecommerce?v


可以看到这个索引下有两个分片,一个主分片一个副本分片,docs列显示的是文档数量。

3、总结

ES对文档的统计根据不同的场景和维度,有不同的方法,在实际项目中根据业务场景选择适合自己的方式即可。

ES系列之原来查看文档数量有这么多姿势相关推荐

  1. 【Flutter】插件包选择 ( 查看文档是否全面 | 查看插件包的更新版本次数 | 查看使用示例 | 查看 GitHub 项目的 Star Fork Issues )

    文章目录 一.插件包选择 二.查看文档是否全面 三.查看插件的更新版本次数 四.查看使用示例 五.查看 GitHub 项目的 Star Fork Issues 一.插件包选择 开发 Flutter 时 ...

  2. PG系列数据库TPCH测试文档

    PG系列数据库TPCH测试文档 该文档适用于使用postgresql语法的数据库 一.机器环境 此次测试只为走通该测试的测试流程,准备的服务器是本地虚拟化的机器,故性能不具备参考价值 主机名 ip 内 ...

  3. Tips系列之飞书云文档

    飞书云文档可谓是飞书套件中深受用户喜爱的功能之一,今天就给大家呈上几个小Tips,让你深入了解飞书云文档! 1. 新建在线文档.表格和文件夹 电脑桌面端 方式 1 点击飞书桌面端左侧的云文档按钮,登录 ...

  4. Linux下如何查看文档的内容

    查看文档内容的命令有: cat tac head nl tail more less od cat命令显示文档的全部内容,当文档较大的时候只显示最后的部分,所以cat命令适合查看内容较少的文档.可加选 ...

  5. 第七课 环境变量PATH,cp、mv及查看文档cat/more/less/head/tail命令

    一.环境变量(PATH)echo $PATH 查看环境变量的目录PATH=$PATH:/tmp/ (目录)给一个目录赋值环境变量: 让以上环境变量永久生效: 编辑 vi /etc/profile/ 把 ...

  6. 环境变量,cp,mv,查看文档命令

    2019独角兽企业重金招聘Python工程师标准>>> 一.环境变量PATH echo $PATH 打印当前的环境变量 PATH=$PATH:路径 自定义环境变量 which查找某个 ...

  7. linux 查看 文档 不显示注释 命令

    原文:http://www.weiruoyu.cn/?p=661 最近发现一个很好的命令,就是linux 查看 文档 不显示注释 的命令 [root@localhost ha.d]# cat ha.c ...

  8. Xcode中快速定位、快速查找、快速查看文档、快速解决不再打印等技巧

    文章原文地址:http://blog.sina.com.cn/s/blog_68f324850102x4et.html 技巧一:快速定位 XGLog(@"----%s----%d------ ...

  9. 查看文档(API) (NSString)

    查看文档(API)          OC的数据类型         NSInteger: 整型(32 = int, 64 = long)         CGFloat: 浮点型(32 = floa ...

最新文章

  1. 零配置Socket TCP消息通讯服务容器EC
  2. 开发日记-20190708 关键词 读书笔记 《Perl语言入门》Day 5
  3. C++中自定义比较函数和重载运算符总结
  4. 优化Nginx服务的安全配置
  5. python中的print()、str()和repr()的区别
  6. 成员函数后面加上const的作用
  7. [剑指offer]面试题第[41]题[Leetcode][第235题][JAVA][数据流中的中位数][优先队列][堆]
  8. Spark源码走读1——RDD
  9. python怎么抓取网页倒计时_python实现的简单窗口倒计时界面实例
  10. springboot添加webmagic_SpringBoot+Solr + webmagic JD商品爬取数据,放入solr中做搜索
  11. BZOJ 1831 逆序对
  12. 古田县争取高速公路的历程
  13. html如何嵌入手机,手机嵌入页面
  14. 极客君教你破解隔壁妹子的wifi密码,成功率高达90%
  15. [抄袭]年薪五万程序员的生活及他的理财梦
  16. 实习每日总结_20161212
  17. python微信公众号翻译功能_10分钟教你用Python实现微信翻译机器人
  18. 初级——程序如何打包成apk文件
  19. jemalloc源码解读(六)基数树
  20. cmd 命令行窗口切换目录 cd 命令操作方法

热门文章

  1. 关于百度快照回档及百度快照消失的一些分析
  2. jad 集成 eclipse
  3. 备战省赛第一场 问题 E: 不存在的泳池
  4. 三星电子表示:正加速中国本土化进程
  5. Linux系统——Nginx反向代理与负载均衡
  6. 究竟是什么在决定着我们的命运?
  7. qtp查询mysql_QTP如何连接/查询数据库
  8. 【c语言】给出三角形的三边长,求三角形面积
  9. jpeg是什么格式(png,jpg,jpeg是什么格式)
  10. 机器学习之决策树算法(1)