我看到了许多类似于这个主题的问题(包括这个讨论了ElasticSearch版本6如何克服了它作为主要数据存储的许多限制),但我仍然不清楚以下几点:
我正在创建一个在线购物网站,我使用MySQL作为我的数据库。
这是my的简化版本(用户可以在网站上发布产品以供销售)

我正在学习ElasticSearch,我想用它来搜索我的网站上的产品。我不需要用户和ProductReview被搜索,只有产品表。
我可以想出两个解决方案来实现这一点:
据我所知,如果我使用选项1,那么我可以使用go-mysql-elasticsearch与MySQL同步ES :这是一个好的解决方案吗?
我更倾向于使用选项2,因为它更容易,我不需要担心数据同步。关于这一选择,我关心的是:
我没有使用ES/NoSQL的经验,希望得到任何建议。
发布于 2018-04-03 12:34:58
首先,我要指出,严格意义上说,Elasticsearch不是一个数据库,在理想情况下不应该使用。然而,没有什么能阻止你去做它(而且很多人都在这么做),根据弹性公司的好人所说,他们永远不会努力使ES成为一个真正的数据库。专家系统的主要目标是成为一个快速可靠的搜索和分析引擎。
如果可以的话,您应该始终保留另一个主要的真理来源,如果有什么事情发生了,您可以随时轻松地(重新)建立您的ES索引。
在您的情况下,选项1似乎是可行的,因为您只想让用户搜索您的产品,所以没有必要同步ES中的其他表。
选项2听起来很有吸引力,但是只有当您决定只使用ES时,如果您想要依赖事务(ES没有事务支持),就不应该使用ES。另一件您需要知道的事情是,如果您只在ES中拥有数据,并且您的索引由于某种原因(在升级期间、ES中的bug、代码中的bug等等)而损坏,那么您的数据就会消失,您的业务就会受到影响。
因此,为了更准确地回答你的问题:
发布于 2018-06-14 06:11:53
解决这个问题的方法很多.这就是我最后所做的:
我选择了选项1,并构建了一个同步器来定期将我的产品复制到Elasticsearch。其实很简单..。我实现了这里解释的方法:如何使数据库与ElasticSearch同步使用Elasticsearch嵌套客户端
https://stackoverflow.com/questions/49629830
复制相似问题