Elasticsearch跟踪近似值的总命中备选项

uxhixvfz  于 2023-01-08  发布在  ElasticSearch
关注(0)|答案(1)|浏览(159)

根据本文-link,将track_total_hits属性设置为true会带来一些严重的性能问题。
我们目前使用它来获得用户搜索后匹配的文档数,然后用户可以使用pagination滚动结果,这样的搜索文档数通常在10 k-5 M之间。
用户工作流程示例:
1.用户执行匹配150,000个文档的搜索
1.我们向他显示前200个结果,他可以滚动浏览,但我们也向他显示在搜索中找到的文档总数。
因为我们总是显示文档搜索的数量,而且这些数字通常会很高,我们需要某种方法来获得这个计数。我不确定,但如果我们几乎总是执行分页搜索,我会假设很多东西会在内存中?也许这实际上对我们的影响比它在提供的文章中显示的要小?
某种近似值而不是精确的计数对我们来说是可以的,如果它能提高性能的话。
在Elasticsearch中是否有这样一个选项,我们可以获得搜索请求的近似计数?

5anewei6

5anewei61#

没有获得近似计数的选项,但是您可能希望考虑为track_total_hits而不是true分配一个下限,从性能的Angular 来看,这是一个很好的折衷(https://www.elastic.co/guide/en/elasticsearch/reference/master/search-your-data.html#track-total-hits)
这样,您就可以向用户显示至少有k个结果--但可能更多。
另外,尝试使用search_after(如果还没有使用)进行分页。

相关问题