有什么方法可以检索client.Search的所有结果(我认为可以使用scroll API完成),并在显示结果时为这些结果创建分页?有来自ES的API吗?
或者使用From()和size(),可以做到吗?
比如说,我在索引上有10万个文档,当我搜索一个关键字时,它会产生大约200个结果。我如何使用卷轴,从和大小来显示他们?
提亚
发布于 2016-06-16 05:20:15
我们使用from和size选项来实现弹性搜索结果的分页。代码片段可以如下所示:
def query(page)
size = 10
page ||= 1
from = (page-1) * size
# elasticsearch query with from * size options
end 您可能需要知道实现分页的结果总数,而不需要发送额外的计数请求。要获得总的结果,可以使用响应的total字段。
===更新的
如果您想获得第一页的搜索结果,那么可以使用query(1)。如果您想获得第二个页面的搜索结果,那么您可以使用query(2)等等。
scroll的用途略有不同。假设您需要获得搜索结果的所有记录,结果的数量太大(例如,数百万的结果)。如果您一次检索所有数据,由于负载高,会出现一种或多个内存问题。在这种情况下,可以使用scroll一步一步地获取结果。
对于分页,不需要获取搜索结果的所有数据。您只需要获取特定页面的some数据。在这种情况下,您可能需要只使用query和from和size选项,而不是scroll。
https://stackoverflow.com/questions/37848704
复制相似问题