我正在开发一个 Rails 应用程序,该应用程序使用 Elasticsearch 来索引和搜索三种类型的文档,我们将它们A
称为. 它们是相关的,但如何并不重要。有一个搜索视图,您可以在其中搜索并返回 3 个不同类别下的项目。最初的设置是在一个列表中列出所有类别的 20 个顶级结果,但现在效果不太好。B
C
现在,该视图将具有 3 个不同的选项卡,其中一个用于每个索引的结果。然后,当前的方法将崩溃,因为我希望每个类别独立地获得多达 10 个结果,而不是说 23 个A
、2 个B
和 5 个C
,如果我只是增加结果限制以希望获得传播,就会发生这种情况。如果我在 Go 中执行此操作,我很乐意将其拆分为 3 个更简单的并发请求,但我很犹豫是否在 Ruby 中尝试此操作,因为我对它还很陌生。根据我的研究,我的选择似乎是:
- 让当前的 Elasticsearch 查询最多返回 30 个结果,每个索引的限制为 10 个(我的问题)
- 委托给
wget
系统上的 3 个后台调用,稍后旋转等待结果 - 使用多线程方法(Ruby 进程启动时间太长)。我正在使用的所有 Gems 中会出现线程安全蠕虫的前景让我感到害怕。
第一个绝对完美,我只是不知道如何通过阅读文档来完成这一点。我知道您可以将结果汇总到听起来接近我想要的存储桶中,但是是否可以单独限制每个索引的结果数量?