gpt4 book ai didi

elasticsearch - Elasticsearch 分页

转载 作者:行者123 更新时间:2023-12-02 22:30:53 29 4
gpt4 key购买 nike

我必须从 flex 搜索中查询记录,并将它们显示在页面大小为1000的网格中。我的索引可以包含超过100万条记录。

由于index.max_result_window的上限为10,000,我不再能够使用+大小查询进行分页。由于性能原因,我不想增加此限制。

我正在使用滚动API进行分页和遍历记录以显示所需的页面。例如如果有人请求第9页,我将滚动9次。

它适用于初始页面,但是您可以想象到最后一页非常慢。

我不是 flex 搜索专家,因此有什么建议可以改善这一点?

提前致谢

Edit 21/09/2016



版本:Elasticsearch 2.4.0

滚动示例: https://www.elastic.co/guide/en/elasticsearch/reference/current/search-request-scroll.html

滚动大小:1000

因此,如果我有10,00,000条记录才能到达最后一页,则必须滚动1000次。

另外,用户还可以选择返回,但滚动不支持。所以我必须从头开始滚动。

我认为应该有一个更好的方法。

最佳答案

我相信没有将排序类型设置为“_doc”的滚动查询的行为类似于增加max result window大小,因为您仍按分数顺序返回结果,因此您仍在付出深度分页的费用。

如果您不关心结果的顺序,则将排序设置为“_doc”。
参见this。尽管这仍然不能让您返回,因为这不是滚动的原理。

如果您确实希望文档按分数排序,并且还希望随时切换页面,则除了增加max result window大小外,没有其他方法。
直到实际开始深度分页之前,增加max result window实际上不会以任何其他方式影响性能,并且如果要基于分数进行分页,则实际上没有其他方法可以避免这种情况。

您只能做的另一件事是在您的应用程序中异步请求所有页面并存储结果,然后在用户实际请求它们时从那里获取结果。

关于elasticsearch - Elasticsearch 分页,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39576405/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com