我即将重建我的Web应用程序,使用弹性搜索而不是mysql进行搜索,但我不确定该怎么做。
我在其上观看了一个Laracon视频,因为我的应用程序是在Laravel 4.2上构建的,我将使用这个包装器来查询:https://github.com/elasticsearch/elasticsearch
但是,我是否仍会使用MySQL数据库来存储数据,并进行ES搜索?或者更好的是拥有ES并查询数据。
如果我走第一条路线,我是否必须在双方进行CRUD操作以保持更新?
ES可以处理MySQL可以承载的数据吗?意味着数亿行?
我在开始整个事情时非常轻松。我可以使用一点方向,非常感谢。我从未使用过MySQL以外的任何搜索。
答案 0 :(得分:1)
我建议将MySQL保留为记录系统,并针对MySQL从您的应用程序执行所有CRUD操作。然后启动ElasticSearch机器并定期将数据从MySQL移动到ElasticSearch(仅需要搜索的数据)。
然后,如果ElasticSearch发生故障,您只会丢失搜索功能 - 您的主数据存储仍然可以。
ElasticSearch可以配置为群集,可以扩展得非常大,因此它可以处理行数。
要将数据导入Elastic,您可以执行以下操作:
进行初始导入(非常慢,非常大),然后只使用进程复制差异。您可能会考虑使用Mule ESB来移动数据(http://www.mulesoft.org/)。
当您从应用程序中写入数据时,您可以向MySQL写一次,并将相同的数据写入Elastic。这提供了Elastic中的实时数据,但当然如果第二次写入Elastic失败,那么你将丢失数据。