我们的系统中有数百万用户的大量交易。这些事务作为文档存储在elasticsearch中,每个月都会创建索引。例如,“transactions-09-2020”是9月份的指数,“transactions-08-2020”是2020年8月份的指数。
现在我们需要在用户的应用程序上显示这些事务,按日期降序排列。因为在第一页我需要显示至少50个事务,所以我可能需要从多个索引中获取数据,比如从本月索引以及从前几个月索引中获取数据。用户在一个月内可以拥有任意数量的txn。用户总是可以从第一页向下滚动到第二页,从第二页向下滚动到第三页,依此类推。
主要的问题是找到我需要搜索多少索引才能得到这50个txn。如果我们按照当前月索引的搜索方法,如果txns小于50,则继续到前几个月,直到txns为50,问题将是es的命中数。
我们希望尽量减少点击次数,以便在一页中获取这50个txn。这50个txn可以属于任何一个页面,比如1st、2nd等等。
如何预先确定获取这50个文档需要搜索多少索引?我是否有任何逻辑可以将搜索索引的负载转移到elasticsearch,我只关注页码和TXN的数量(即,在这种情况下,第1页取50个TXN,第2页取50个TXN,第3页取剩余的TXN)。
1条答案
按热度按时间0lvr5msh1#
您可以创建这样的别名
并使用
from
以及size
在日期字段上带有“range”过滤器的参数(我假设您在事务文档中有它),在这种情况下,您不必担心从哪个索引读取。我会照顾你的。