在应用程序中与Elastic通信的最佳实践

时间:2017-03-27 06:56:13

标签: oop elasticsearch design-patterns mediator

这将是我第一次在生产中使用Elastic。

对于数据库,我使用存储库模式,例如ID | Code | Name 1 | f965a4eb IN | Bob 3 | f965a4ed IN | James 的具体类,IOrderRepository使用SQL和Mongo驱动程序与db进行通信。

该应用程序将从Elastic获取所有产品,并使用Elastic REST Api获取数据。

在代码库中表示弹性提供程序(?)的最佳做法是什么?

我可以继续使用Repository模式,并创建使用IFacetRepository并进行http调用的ProductRepository,但我觉得这不是一个完美的解决方案。

我也无法创建ElasticClient,因为我不希望代码中有任何业务。 单一的责任就是从弹性产品中获取产品。

可能mediator pattern是正确的实施方式。

你有什么建议?

1 个答案:

答案 0 :(得分:1)

我选择内部使用ProductRepository的{​​{1}}:

  • ElasticClient是数据库的接口,其客户端无需知道其实现是否与Relational DB,MongoDB或Elasticsearch进行通信。这正是您通过创建Repository类来实现的目标。
  • 如果您将来从Elasticsearch迁移到另一个数据库(如DynamoDB),您只需要更改ProductRepository,其客户就不会关心。

警惕Mediator模式,因为随着时间的推移你最终会得到 God 对象。