使用Search After时如何计算当前页面?

问题描述 投票:0回答:2

目前,我正在研究 Elastic Search 并对数据进行分页。 特别是,数据按 2 个字段排序:

  • 日期,排序描述
  • id,日期相同时对 desc 进行排序

根据给定的页面大小,我可以使用

number of pages
计算
track_total_hit
。 但是,问题是我无法计算
current page
,因为
sort key(date, id)
不包含有关记录索引的任何信息。

我也考虑过使用

from
size
,但我的数据数量高于10,000条记录。所以不可能使用它们。另外,我不想更改
max_result_window
的默认配置,因为这会影响性能。

您有什么办法可以解决这个问题吗?谢谢!

我查过:

elasticsearch search pagination elastic-stack elasticsearch-dsl
2个回答
0
投票

我研究并发现这是一种权衡。

这类似于 SQL 数据库的 offset-pagination 和 keyset-pagination

抵消策略类似于需要

Scroll API
scan from the beginning
,并且它知道
current page

同时,

search after
keyset strategy
类似,可以实现
not need to scan from the beginning
,但是
won't know the current page


0
投票

但我建议在您使用分页的情况下使用from和size,因为它将帮助您达到良好的水平,因为没有人每1000行分页1页 如果您使用 search after,如果用户编辑修复您的 URL,您将收到错误,那么您将遇到查询问题

© www.soinside.com 2019 - 2024. All rights reserved.