2017-08-27 27 views
2

我是elasticsearch的新手,我想将数据添加到Mysql表以及laravel中的elasticsearch。什么是在laravel中向elasticsearch添加数据的最佳方式

我想用更少的字段保存在mysql中,并使用与其他表的关系,但我想要将所有相关字段嵌入到一个elasticsearch类型中。

我正在使用elasticsearch进行数据挖掘。

将这些数据插入elastis的最佳方法是什么?

我应该使用logstash插入数​​据或直接插入?

是否有必要在这种情况下使用节拍?

+0

如果你找到了答案有帮助浪费你的时间,你可以将其标记接受呢?:) –

+0

感谢您的回答,我将文档放在laravel的日志文件中,然后根据需要编写logstash配置文件,然后使用logstash将它们发送到elasticsearch –

回答

0

Laravel有Elasticsearch软件包https://github.com/cviebrock/laravel-elasticsearch。它使用下面的流行的PHP弹性搜索库https://github.com/elastic/elasticsearch-php

如果你对springseach一般了解不多,那么还有更多的东西可以在这里用几句话来说。我建议从https://www.elastic.co/guide/en/elasticsearch/client/php-api/current/_quickstart.html开始阅读

+0

那么logstash是什么?我应该添加弹性与这些包?或添加到laravel日志,然后将这些日志添加到logstash? –

0

我建议使用php的elasticsearch客户端,就像@margus建议的那样。为了将数据索引为弹性,就我所了解的问题而言,有两种方法可以解决这个问题。

  1. 如果也许要插入数据到MySQL上的用户请求(例如用户注册等),则可以考虑射击事件的MySQL保存以后可处理掉一个队列,和一个脚本(或laravel命令)可以使用该事件将数据索引为弹性。该脚本显然会有您的应用程序代码以所需的格式获取所需的数据。
    如果索引不重,或者应用程序不是为了迎合许多用户,您可以简单地将数据索引为mysql保存后的弹性,并避免推迟任务。

  2. 或者,如果在每次mysql保存时更新弹性索引并不重要,您可以设置一个cron任务(任何可以定期运行的任务)并在那里执行抓取和索引。

我还没有logstash工作,但我认为它的主要用途情况下阅读起飞,可以在logstash配置文件进行解析,并与吸收服务器同步服务器的日志文件。我不确定,但是可能有插件允许从mysql读取数据,但是这样您就无法在logstash配置文件中编写复杂的应用程序逻辑。 即使可以,我还是更愿意在应用程序中编写与应用程序相关的代码(其他开发人员可以读取它,并且因为它全部位于同一个存储库中而易于更改)。因此,如果您使用弹性索引的数据与应用程序相关(与日志不同)并需要访问应用程序逻辑,那么您最好自己编写索引器。

相关问题