[英]How to create pagination based on client.Search results Elasticsearch Nest
有什么方法可以从client.Search中检索所有结果(我认为可以使用scroll API
来完成),并在显示结果时为这些结果创建分页? ES是否提供了这样做的API?
或使用From()
和size()
可以完成吗?
例如:假设我在索引上有100,000个文档,当我搜索一个关键字时,它会产生大约200个结果。 如何使用滚动,从和大小来显示它们?
TIA
我们使用from
和size
选项来实现Elasticsearch结果的分页。 该代码段可以如下所示:
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
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.