Elasticsearch单独使用 vs Couchbase+Elasticsearch

3
让我描述一下问题。现在我正在进行架构变更阶段。我过去使用Elasticsearch作为聚合和搜索工具,但现在我正在考虑将其用作主要数据库。我了解到不建议将Elasticsearch用作主要数据库,只能用作索引。因此,我阅读了有关将其与Couchbase连接的演示文稿:

https://2013.nosql-matters.org/bcn/wp-content/uploads/2013/12/nosql13-bcn-couchbase-elasticsearch-jeroen-reijn.pdf

我下载并安装了Couchbase和与Elasticsearch集成的插件。

https://github.com/couchbaselabs/elasticsearch-transport-couchbase

我对这个解决方案并不完全信服。首先,在Elasticsearch中聚合更快。其次,Elasticsearch支持直方图、地理点、全文搜索等许多其他功能,因此似乎唯一保留Couchbase作为主数据库的原因是不使用Elasticsearch。

因此,我的问题是在我的情况下将Elasticsearch与Couchbase集成的好处是什么?

3个回答

0
到目前为止,我在使用elasticsearch作为主要数据存储时遇到的唯一重要问题是索引新文档时的延迟。 Elasticsearch是一个“近乎实时”的搜索引擎...必须加上“近乎”限定词,因为在索引文档后,需要等待1秒钟左右才能在搜索期间找到它。
以下是elasticsearch指南相关部分的链接:
{{link1:elasticsearch中的近乎实时搜索}}
这是我构建的Web应用程序中出现的问题,其中包含一个列出用户的页面。我的情况是管理员在用户列表页面上单击“新用户”按钮,然后被带到另一个页面以创建用户。当管理员保存用户文档时,他被重定向到列表页面,但由于elasticsearch的索引延迟,新创建的用户没有显示出来。
elasticsearch指南说可以手动刷新索引,但不要在生产环境中这样做。 ...不要在生产环境中每次索引文档时都进行手动刷新;这会影响性能。相反,您的应用程序需要了解Elasticsearch的近乎实时特性,并为此做出调整。

我最終還是重新整理了索引,因為在我的應用程序中創建新用戶非常罕見,但這不是很好的解決方案。

幾個月前,我發布了一個問題,詢問其他人如何解決這個問題:

如何處理Elasticsearch索引延遲

對於那個問題的回答有一個我喜歡的建議。基本上,作者建議使用您提交的數據手動將記錄插入列表中,而不是等待服務器返回。只要不依賴於服務器生成的字段,這應該是可行的。

但最終,您應該不會在像Couchbase這樣的數據庫中遇到此問題。


0
使用couchbase插件将允许自动将Couchbase中的数据更改重新索引到Elasticsearch中。但是,您可能需要查看Couchbase可能强制执行的模式/映射是否适合您的查询。一旦数据在Elasticsearch中,仍然可以直接使用Elasticsearch查询对其进行搜索或聚合等操作。
使用Couchbase的一个好处可能是它允许跨数据中心复制(使用多个Elasticsearch集群),而通常不推荐在多个数据中心中使用单个Elasticsearch的做法。

0

我现在已经使用ES作为数据库几年了,从未遇到过问题,而我尝试使用MongoDB时却遇到了很多问题!

备份数据总是好的,在你的情况下可以使用"Couchbase",但并非必须。你可以每天创建ES快照,这可能已经足够了。

需要考虑的一点是ES是“近乎实时”的,这意味着编辑后的数据在几毫秒后就可用。

ES速度快,易于设置和扩展。HTTP协议是任何语言中进行通信的最佳方式。


1
我认为有必要澄清一点,ES是一个搜索引擎(而不是许多人认为的数据库)。 根据我对那些认为数据丢失不可能(安全、财务等方面)的人的理解,不要将ES用作主要数据存储。 - Yohan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接