繁体   English   中英

如何基于客户端创建分页搜索结果Elasticsearch Nest

[英]How to create pagination based on client.Search results Elasticsearch Nest

有什么方法可以从client.Search中检索所有结果(我认为可以使用scroll API来完成),并在显示结果时为这些结果创建分页? ES是否提供了这样做的API?

或使用From()size()可以完成吗?

例如:假设我在索引上有100,000个文档,当我搜索一个关键字时,它会产生大约200个结果。 如何使用滚动,从和大小来显示它们?

TIA

我们使用fromsize选项来实现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数据。 在这种情况下,您可能需要使用只queryfromsize选择不scroll

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM