我应该使用Elastic Search作为我的数据存储而不是MySQL吗?

时间:2014-11-29 22:26:48

标签: php mysql ubuntu nginx elasticsearch

我即将重建我的Web应用程序,使用弹性搜索而不是mysql进行搜索,但我不确定该怎么做。

我在其上观看了一个Laracon视频,因为我的应用程序是在Laravel 4.2上构建的,我将使用这个包装器来查询:https://github.com/elasticsearch/elasticsearch

但是,我是否仍会使用MySQL数据库来存储数据,并进行ES搜索?或者更好的是拥有ES并查询数据。

如果我走第一条路线,我是否必须在双方进行CRUD操作以保持更新?

ES可以处理MySQL可以承载的数据吗?意味着数亿行?

我在开始整个事情时非常轻松。我可以使用一点方向,非常感谢。我从未使用过MySQL以外的任何搜索。

1 个答案:

答案 0 :(得分:1)

我建议将MySQL保留为记录系统,并针对MySQL从您的应用程序执行所有CRUD操作。然后启动ElasticSearch机器并定期将数据从MySQL移动到ElasticSearch(仅需要搜索的数据)。

然后,如果ElasticSearch发生故障,您只会丢失搜索功能 - 您的主数据存储仍然可以。

ElasticSearch可以配置为群集,可以扩展得非常大,因此它可以处理行数。

要将数据导入Elastic,您可以执行以下操作:

  1. 进行初始导入(非常慢,非常大),然后只使用进程复制差异。您可能会考虑使用Mule ESB来移动数据(http://www.mulesoft.org/)。

  2. 当您从应用程序中写入数据时,您可以向MySQL写一次,并将相同的数据写入Elastic。这提供了Elastic中的实时数据,但当然如果第二次写入Elastic失败,那么你将丢失数据。