如何根据 client.Search 个结果创建分页 Elasticsearch Nest
How to create pagination based on client.Search results Elasticsearch Nest
有什么方法可以从 client.Search 检索所有结果(我认为这可以使用 scroll API
完成)并在显示这些结果时为这些结果创建分页? ES 是否有任何 API 这样做?
或者用From()
和size()
,可以吗?
例如:比方说,我在索引上有 100,000 个文档,当我搜索关键字时,它会生成大约 200 个结果。如何使用 scroll、from 和 size 来显示它们?
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
.
有什么方法可以从 client.Search 检索所有结果(我认为这可以使用 scroll API
完成)并在显示这些结果时为这些结果创建分页? ES 是否有任何 API 这样做?
或者用From()
和size()
,可以吗?
例如:比方说,我在索引上有 100,000 个文档,当我搜索关键字时,它会生成大约 200 个结果。如何使用 scroll、from 和 size 来显示它们?
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
.