今天遇到一个问题,kibana中看到文档数与下面语句查询到的不同
bash
GET /_cat/count/jiankunking_xxxxx_product_expand_test?v
GET /jiankunking_xxxxx_product_expand_test/_search?track_total_hits=true
语句查询结果
bash
epoch timestamp count
1711433785 06:16:25 508666675
kibana数据
kibana这里看到的数据与GET _cat/indices?v获取到的结果是一样的
语句
bash
GET _cat/indices/jiankunking_xxxxx_product_expand_test?v
结果
bash
health status index uuid pri rep docs.count docs.deleted store.size pri.store.size
green open jiankunking_xxxxx_product_expand_test7BbNsDs_RVyOR1Wn4LZoDA 6 0 894203500 88097 336.8gb 336.8gb
那么到底哪个是对的呢?
在GitHub中找到了原因:https://github.com/elastic/elasticsearch/issues/25868
cat api 和 count api 之间存在差异。前者查看的是 Lucene 统计,而后者执行的是查询。Lucene 统计会考虑到已删除的文档和嵌套文档,而这两种情况都隐藏在搜索次数中。
由于jiankunking_xxxxx_product_expand_test中有多个nested属性,所以cat的数量是比count api获取到的多不少。