【发布时间】:2020-09-17 21:01:49
【问题描述】:
我们的系统中有数百万用户的大量交易。这些交易作为文档存储在 ElasticSearch 中,并按月创建索引。例如,“transactions-09-2020”是 9 月的索引,“transactions-08-2020”是 2020 年 8 月的索引。
现在我们需要在用户的应用上显示这些交易,按日期降序排列。由于在第一页上我需要显示至少 50 笔交易,我可能需要从多个索引中获取数据,例如当前月份索引以及前几个月索引。用户在给定月份可以拥有任意数量的 txns。用户始终可以从第 1 页向下滚动到第 2 页,从第 2 页向下滚动到第 3 页,依此类推。
主要问题是找到我需要搜索多少个索引才能获得这 50 个 txns。如果我们通过在当月索引中搜索的方法,如果 txns 小于 50 则继续前几个月直到 txns 为 50,问题将是对 ES 的命中数。
我们希望尽量减少在页面中获取这 50 个 txns 的点击次数。这 50 个 txns 可以属于任何页面,例如第 1、第 2 等等。
如何事先确定我需要多少个索引来搜索这 50 个文档?我可以有任何逻辑将这种搜索索引的负载转移到elasticsearch,而我只关注页面编号。和 txns 的数量(即在这种情况下,为第 1 页获取 50 个 txns,为第 2 页获取 50 个 txns,为第 3 页获取剩余的 txns)。
【问题讨论】:
标签: elasticsearch pagination lucene