Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/60.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 同时使用弹性搜索和mysql的应用程序_Php_Mysql_<img Src="//i.stack.imgur.com/RUiNP.png" Height="16" Width="18" Alt="" Class="sponsor Tag Img">elasticsearch - Fatal编程技术网 elasticsearch,Php,Mysql,elasticsearch" /> elasticsearch,Php,Mysql,elasticsearch" />

Php 同时使用弹性搜索和mysql的应用程序

Php 同时使用弹性搜索和mysql的应用程序,php,mysql,elasticsearch,Php,Mysql,elasticsearch,我正在写一个分类广告网站,将提供搜索功能。在我的整个经历中,我一直依赖mySQL作为数据存储,因此使用弹性搜索进行开发对我来说是一件新鲜事 我可以看到三种选择: 使用弹性搜索作为我的应用程序中唯一的存储(有一个扩展),让它存储所有内容—用户、权限、活动日志等等 使用MySQL并仅存储分类的ID,并分别从ES中提取所有数据 在MySQL和弹性搜索中复制数据 通常采用的方法是什么?ES几乎是实时存储,因此您无法更换实时存储引擎。对于生产,Elasticsearch集群应至少有3个符合条件的主节点

我正在写一个分类广告网站,将提供搜索功能。在我的整个经历中,我一直依赖mySQL作为数据存储,因此使用弹性搜索进行开发对我来说是一件新鲜事

我可以看到三种选择:

  • 使用弹性搜索作为我的应用程序中唯一的存储(有一个扩展),让它存储所有内容—用户、权限、活动日志等等

  • 使用MySQL并仅存储分类的ID,并分别从ES中提取所有数据

  • 在MySQL和弹性搜索中复制数据


通常采用的方法是什么?

ES几乎是实时存储,因此您无法更换实时存储引擎。对于生产,Elasticsearch集群应至少有3个符合条件的主节点

将MySql与ES同步有时可能会变得很麻烦。 我建议您尝试一下MongoDB,Mongo2ES连接器可以在数据库发生更改时自动将数据复制到ES

最后,您可以混合使用Mysql、MongoDB和ElasticSearch

  • Mysql用于用户、权限、活动日志
  • 永久分类丰富数据的MongoDB
  • 用于快速搜索分类丰富数据的ES

  • 我的建议是坚持使用mysql作为主存储,并利用触发器的功能处理后台作业,维护mysql和elastic之间的同步数据。我建议不要使用elastic mongo组合,因为没有官方的连接器

    使用mysql作为主存储还可以确保数据备份,以防集群发生灾难。 确保为群集的大容量索引保持适当的队列大小


    或者,如果您除了搜索和备份S3或文件系统之外没有其他存储,请将elastic保留为唯一的主存储。

    Elasticsearch不建议作为您的唯一存储。ES是一个搜索服务器。常用的方法是使用mysql作为数据库,并使用类似PostPersist的原则事件,您可以将数据发送到elasticsearch,这种方法将使您的elasticsearch与mysql数据保持同步。@Waldemaneto感谢您的回复。我应该复制整个数据库还是只复制可搜索的数据?尝试只聚合和复制可搜索的数据。我的建议是坚持使用mysql作为主存储,利用触发器的功能处理后台作业,并保持mysql和elastic之间的同步数据。我建议不要使用elastic mongo组合,因为没有官方的连接器。谢谢,事情现在清楚多了。不管谁投了反对票,你能说一下建议的方法有什么问题吗?是的,请告诉我!Mongo connector非常正式:我在生产中使用它,没有任何问题。非常感谢。你的回答清楚多了。我看不出ES结束和MySQL开始的界限,但您的答案与@WaldemarNeto答案结合在一起非常有意义