如何在多索引的elasticsearch中实现分页?

jchrr9hc  于 2021-06-14  发布在  ElasticSearch
关注(0)|答案(1)|浏览(465)

我们的系统中有数百万用户的大量交易。这些事务作为文档存储在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)。

0lvr5msh

0lvr5msh1#

您可以创建这样的别名

`POST /_aliases
{
  "actions" : [
    { "add" : { "index" : "transactions-09-2020", "alias" : "transactions" } }
  ]
}`

并使用 from 以及 size 在日期字段上带有“range”过滤器的参数(我假设您在事务文档中有它),在这种情况下,您不必担心从哪个索引读取。我会照顾你的。

相关问题