mar*_*dos 6 architecture ruby-on-rails elasticsearch microservices
我对弹性搜索及其缩放很新,我有一个问题,我甚至不知道如何处理.
情况如下:
有几个服务器使用Rails微服务应用程序.他们每个人都获得了自己相当大的数据(更具体地说,聚合来自不同社交网络的帖子 - 所以可索引搜索字段在所有数据库中都是相同的).
我需要找到一个解决方案,允许将数据保存在当前位置,并设置专门用于搜索多个数据库的elasticsearch服务器,而不会打开相应的Rails应用程序.这可能意味着在每个其他服务器上设置ES,在那里定义搜索模式,但在完全不同的服务器上进行多模型搜索.
这些操作的最终目标应该是将整个ActiveRecord对象/或所有相关属性发送到主应用程序.
甚至有可能实现吗?也许有人遇到过类似的问题?
关于如何开始使用它,我有点迷茫.
这个问题有点宽泛,但我想我至少可以根据我的理解为你指出正确的方向。首先,让我先陈述一下我所理解的您的问题。
您有多个数据库,每个数据库都由自己的微服务填充。每个数据库都包含您希望能够搜索的类似信息(即作者、正文、标题等)。您需要一个能够访问所有这些数据库中的数据并可以返回包含正确信息的结果的 Elasticsearch 集群。与搜索匹配的数据库和文档。
Elasticsearch 在处理此类复杂情况时非常强大。由于所有数据都具有相似的结构和字段,因此您只需使用一个带有附加字段的索引来存储文档来自哪个数据库以及该数据库的文档 ID。这将允许您执行搜索,例如“向我提供 William Shatner 在这 3 个社交网络上发布的所有帖子”。
您将需要一些额外的功能才能完成这项工作。首先,您需要一种将数据从数据库获取到搜索索引的机制。在我的团队中,我们使用单独的 IndexingService,它知道如何读取事件流并将实时数据发送到 ES 索引。您只需要决定索引策略(即您多久用新条目更新索引一次?)。其次,您将需要客户端的一些逻辑来获取原始搜索结果并从数据库中检索相关条目。
这只是解决您的问题的一种方法。如果您想要一种方法,允许您为每个社交网络维护不同的索引,但仍然有一个可以搜索所有社交网络的中心位置,我建议您考虑使用 Elasticsearch Tribe Nodes。基本上,它是一个提交搜索的地方,它了解每个搜索集群以及如何与它们交互以返回统一的搜索结果。
学习 Elasticsearch 的最佳方法就是启动并运行集群并开始实验!祝你好运!
| 归档时间: |
|
| 查看次数: |
1001 次 |
| 最近记录: |