我是elasticsearch的新手,我想将数据添加到Mysql表中,并且还要在laravel中添加弹性搜索。
我想用更少的字段保存在mysql中并使用与其他表的关系,但我想将所有相关字段嵌入到一个elasticsearch类型中。
我正在使用elasticsearch进行数据挖掘。
将此数据插入弹性体的最佳方法是什么?
我应该使用logstash插入数据或直接插入?
在这种情况下是否有必要使用节拍?
答案 0 :(得分:1)
我建议像@margus建议的那样使用弹性搜索客户端。为了将数据索引为弹性,据我所知,你有两种方法可以解决它。
如果您正在根据用户请求(如用户注册等)将数据插入到mysql中,您可以考虑在mysql-save上触发一个事件,该事件以后可以通过Queue和脚本处理(或者laravel命令)可以使用事件将数据索引为弹性。该脚本显然会有您的应用程序代码,用于以所需格式获取所需数据 如果索引不重或者应用程序不是为了满足许多用户的需求,那么您可以在mysql保存之后将数据简单地索引为弹性并避免延迟任务。
或者,如果更新每个mysql保存的弹性索引并不重要,您可以设置一个cron任务(任何可以安排定期运行的任务)并在那里进行提取和索引。
我没有使用过logstash,但我认为它的主要用例是读取服务器上的日志文件,这些文件可以在logstash配置文件中解析并与摄取服务器同步。我不确定但是可能有插件允许从mysql读取,但是你将无法在logstash配置文件中编写复杂的应用程序逻辑。 即使你可以,我也更喜欢在应用程序中编写与应用程序相关的代码(其他开发人员可以阅读它,并且因为它们都在同一个存储库中而轻松地进行更改)。因此,如果您使用弹性索引的数据与应用程序相关(与日志不同)并且需要访问应用程序逻辑,那么您最好自己编写索引器。
答案 1 :(得分:0)
Laravel拥有Elasticsearch包https://github.com/cviebrock/laravel-elasticsearch。它使用https://github.com/elastic/elasticsearch-php
下面流行的php弹性搜索库如果你对弹性游戏一般不太了解,那么可以用几句话来解释这里可以说的更多内容。我建议开始阅读https://www.elastic.co/guide/en/elasticsearch/client/php-api/current/_quickstart.html
答案 2 :(得分:0)