让我来描述一下这个问题。现在我正处于架构变更的阶段。我曾经使用Elasticsearch作为聚合和搜索工具,但现在我正在考虑将其用作主DB。我读到不推荐使用Elasticsearch作为主DB,只作为索引使用。因此,我阅读了关于将其与Couchbase连接的演示:
我下载并安装了Couchbase和插件,以便与Elasticsearch集成
https://github.com/couchbaselabs/elasticsearch-transport-couchbase
我对这个解决方案并不信服。首先,Elasticsearch中的聚合速度更快。其次,Elasticsearch支持直方图,地理位置,全文搜索和许多其他的搜索,所以似乎保留Couchbase的唯一原因是不将Elasticsearch作为主DB。
所以我的问题是关于在我的案例中集成Elasticsearch和Couchbase的好处?
发布于 2015-12-02 22:09:06
我使用ES作为数据库已经有几年了,从来没有遇到过问题,而我也尝试过MongoDB,但有很多问题!
有一个数据备份总是很好的,在你的例子中使用"Couchbase",但不是必须的。您可以每天创建ES快照,这可能就足够了。
需要考虑的一点是ES是“接近实时的”,这意味着数据在编辑几次(毫秒)后就可以使用。
ES速度快,易于设置,伸缩性很好。HTTP协议是使用任何语言进行通信的最佳方式。
发布于 2015-12-08 22:56:04
使用couchbase插件将允许对Couchbase中数据的更改自动(重新)索引到Elasticsearch中。但是,您可能希望查看Couchbase可能施加的模式/映射是否适合您的查询。一旦数据在Elasticsearch中,您仍然可以直接使用Elasticsearch查询来查询它,以执行搜索或聚合等操作。
使用Couchbase的一个好处可能是它允许跨数据中心复制(使用多个elasticsearch集群),而通常不推荐跨多个数据中心使用Elasticsearch。
发布于 2016-02-15 16:56:14
到目前为止,我在使用elasticsearch作为主数据存储时遇到的唯一重要问题是在索引新文档时的索引延迟。Elasticsearch是一种“近端”实时搜索engine...the“近端”限定符是必需的,因为在索引文档之后会有长达1秒的延迟,然后才会在搜索过程中找到它。
以下是指向elasticsearch指南相关部分的链接:
Near real-time search in elasticsearch
这是我构建的一个web应用程序中的一个问题,该应用程序包含一个列出用户的页面。我的场景是管理员点击了用户列表页面上的“新用户”按钮,然后他被带到另一个页面来创建用户。当管理员保存用户文档时,他被重定向到列表页面,但是由于elasticsearch的索引延迟,新创建的用户没有出现。
elasticsearch指南说你可以手动刷新索引,但不要在生产环境中这样做。
...不要每次在生产环境中为文档建立索引时都进行手动刷新;这会损害性能。相反,您的应用程序需要意识到Elasticsearch的近乎实时的特性,并考虑到这一点。
我最终还是刷新了索引,因为创建新用户在我的应用程序中很少发生,但这不是一个很好的解决方案。
几个月前,我发布了一个问题,询问其他人如何解决这个问题:
How to deal with Elasticsearch index delay
这个问题的答案有一个我喜欢的建议。基本上,作者建议使用提交的数据将记录手动插入到列表中,而不是等待服务器返回。只要您不依赖于服务器生成的字段,这就应该可以工作。
不过,在使用Couchbase这样的数据库时,最终应该不会遇到这个问题。
https://stackoverflow.com/questions/33962789
复制相似问题