我应该使用弹性search作为我的数据存储而不是MySQL?

我即将重build我的web应用程序使用弹性search,而不是mysql进行search的目的,但我不确定如何做到这一点。

我看了一个Laraconvideo,因为我的应用程序是build立在Laravel 4.2上的,我将使用这个包装来查询: https : //github.com/elasticsearch/elasticsearch

但是,我仍然要使用MySQL数据库来存放数据,并有ESsearch吗? 还是有更好的ES屋和查询数据。

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

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

开始整个事情,我只是很滑稽。 我可以使用一个小方向,这将不胜感激。 我从来没有任何除了MySQL以外的任何search工作。

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

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

ElasticSearch可以配置为一个集群,可以扩展非常大,所以它会处理行数。

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

  1. 做一个初始导入(非常慢,非常大),然后复制一个进程的差异。 你可能会考虑类似Mule ESB来移动数据( http://www.mulesoft.org/ )。

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