Elasticsearch:如何在搜索时得到精确的总hits数

从Elasticsearch 7.0之后,为了提高搜索的性能,在hits字段中返回的文档数有时不是最精确的数值。Elasticsearch限制了最多的数值为10000。

当文档的数值大于10000时,返回的total数值为10000,并在relation中指出gte。

我们可以做如下的一个实验。启动Kibana:

然后选中“Add data”:

这样我们就把Sample flight data的数据加载到Elasticsearch中去了。

我们在Dev tools中来查询我们的文档个数:

我们可以看到有13059个数值。假如我们使用如下的方式来进行搜索的话:

显然我们得到的文档的数目是10000个,但是它并不是我们的实际的满足条件的所有文档数。假如我们想得到所有的文档数,那么我们可以做如下的方式:

我们在请求的参数中加入track_total_hits,并设置为true,那么我们可以看到在返回的参数中,它正确地显示了所有满足条件的文档个数。

发布了489 篇原创文章 · 获赞 107 · 访问量 84万+

猜你喜欢

转载自blog.csdn.net/UbuntuTouch/article/details/104087074