【问题标题】:Should we use elastic search for business logic?我们应该对业务逻辑使用弹性搜索吗?
【发布时间】:2018-06-05 12:18:03
【问题描述】:

我有一个以 Cassandra 作为数据库的 jhipster 应用程序。此外,与 Cassandra 一起,我正在使用弹性搜索。目前,我将它用于所有搜索和数据获取机制。但最近我在某处读到我们不应该对业务逻辑使用弹性搜索。所以我应该将它仅用于搜索目的,还是可以使用弹性搜索来获取数据。 请注意我没有使用 elasandra。 我们将数据存储在 Cassandra 以及用于索引目的的弹性搜索中。

弹性搜索版本:5.6.3 Cassandra 版本:3.0.2

【问题讨论】:

    标签: java elasticsearch cassandra jhipster


    【解决方案1】:

    您的问题实际上有点误导,但您仍然有 2 个非常好的问题。主要的困惑来自您对“业务逻辑”一词的使用,所以我想先稍微澄清一下,然后回答您的实际问题。

    首先,业务逻辑(也称为域逻辑)是一组规则,用于确定如何创建、存储和/或更改您的数据。在您的堆栈中,这将由 Spring 代码处理。所以,不,Elasticsearch 不应该处理实际的业务逻辑。

    但是您要问的实际问题是 Elasticsearch 是否应该用于数据检索和搜索? Elasticsearch 实际上是一个很棒的数据存储(尽管我强烈建议将其仅用作辅助数据存储并专注于基本搜索和获取)。使用 Cassandra 作为您的主要数据存储,然后使用 Elasticsearch 快速获取数据片段是一种很好的设计实践,所以继续吧!

    【讨论】:

    • 我目前正在使用 cassandra,并希望添加 elasticsearch 以获取数据。你能简单解释一下正确的设置吗? Cassandra 仍然是主要的数据存储——弹性如何索引数据?
    • @AlexTbk 启动并运行 Elasticsearch 后,您需要一种方法将数据从 Cassandra 加载到新索引中。这可以是脚本或服务的端点。基本上,扫描 Cassandra 数据库,将每个文档转换为 JSON,然后将该文档插入到新的 Elasticsearch 索引中。您可以使用 Index API 一次插入一个文档,也可以使用 Bulk API 批量插入。以下是处理文档的方法:elastic.co/guide/en/elasticsearch/reference/current/docs.html
    • 谢谢。我试了一下 elassandra,它似乎整合得很整齐
    • 关于 ElasticSearch 和 Cassandra 的另一个问题:实际上感觉不再需要在 cassandra 中复制数据来服务不同的查询,因为可以向 elasticsearch 发出查询。你怎么看?
    • @AlexTbk 啊,我明白你在说什么。那么是的,您完全可以从 Elasticsearch 提供数据。事实上,这就是我所做的,而且效果非常好。我要提的唯一警告是,在 Elasticsearch 上分页大量文档(例如 10k+)可能很困难,因此在设计解决方案时请记住这一点。
    猜你喜欢
    • 2011-01-08
    • 2011-06-28
    • 2011-06-01
    • 1970-01-01
    • 2010-09-19
    • 2015-11-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多