2020年4月

查询文档数量时很常见的操作,一般可以直接使用count获取文档数,但是获取到数量信息,在【分页】应用中,意味着需要查询分页然后再查询总数。

有另一种方法,可以让我们在一次查询中获取分页数据并得到总量。

在搜索时,结果中的 hits.total 信息中会包含一个整数值表示文档数,当实际文档数小于10000时显示具体数量,当大于10000时,只显示10000并且包含另一个字段relation来表示是否大于10000:
在这里插入图片描述
而要在文档数大于10000时获取实际的数量,需要加入参数:track_total_hits
在这里插入图片描述
track_total_hits=true表示显示实际的文档数,此时hits.total的会变成:
在这里插入图片描述
relatiion为eq表示value值等于文档数值。

我的个人博客:逐步前行STEP

去重计数不是精确计数,数据量大的情况下会有误差,官方文档说的是,默认的情况下百万级数据会有5%的误差,实测如下:

实际文档数:1924920
在这里插入图片描述

去重计数:1912715在这里插入图片描述

误差率:(1924920 - 1912715)/ 1924920 = 0.006
%0.6的误差率还能接受,如果需要更高的准确度的话,需要调整precision_threshold的值,默认值是100,可选值在0~40000,值越大越准确但是越消耗内存,其内存使用满足公式:precision_threshold * 8 (字节)
,实测设为40000时计数为1926620:
在这里插入图片描述

误差率:(1924920 - 1926620)/ 1924920 = -0.0008
只有%0.08的误差率,在不需要完全准确的计数得情况下,完全可以接受。