Elastic Search 是适合只读 Api 的良好数据存储吗?

Is Elastic Search a good data store for a Read Only Api?

我们计划创建一个以只读方式公开的报告数据库 api。它将包含与我们的客户和内部流程(如发票)相关的报告阅读 api。

此外,我们认为将 Kibana 置于其之上以对我们的内部团队进行分析也很有用。

Elastic Search 适合这个用例吗?

是的,为什么不呢,Elasticsearch 将是您 use-case 非常好的选择,原因如下:

  1. 您可以 de-normalize 您的数据并将它们存储在单个索引中,这将使获取和搜索非常快,这通常是 nosql 和 ES 的主要用例。
  2. Basic x-pack security 在 ES 中免费提供,这将为您的用户提供只读访问权限,无需付出太多努力和成本。
  3. 除了搜索之外,Elasticsearch 在分析 use-case 方面再次非常受欢迎,您可以 运行 轻松地为您的 use-case 进行聚合,并且可以使用 Kibana dashboard 用于可视化,它与 ES 的集成非常好,因为两者都是同一家公司(Elastic)的产品。

最重要的是,ES 是可水平扩展的分布式系统,可以轻松扩展到数百个节点,以支持任何人不断增长的需求。

除了 opster 的回答之外,我还想提两点可能有助于您做出决定的事情:

  1. E.S 如何为我们提供 real-time 生产中具有广泛数据集的报告用例

  2. E.S 与 Mongo(我们测量)的报告性能

How E.S is serving for a real-time reporting use case in production with an extensive data set

E.S 为我们的以下案例提供 real-time 结果(不到 1 秒):

  1. 由 运行 多组过滤器(日期等)和数百万数据点聚合生成的报告

  2. 基于时间的报告(按天、周、月、季度、年对数据进行分组)- 由 DateHistogram

    提供支持

Performance of reporting in E.S vs Mongo (that we measured)

在 E.S 中聚合 500 万个数据点花费了 < 1 秒,而在类似的实例中花费了 Mongo > 10 秒。

除上述之外:还支持scripting,这提供了很大的灵活性。