2017-08-27 173 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配置文件中編寫複雜的應用程序邏輯。 即使可以,我還是更願意在應用程序中編寫與應用程序相關的代碼(其他開發人員可以讀取它,並且因爲它全部位於同一個存儲庫中而易於更改)。因此,如果您使用彈性索引的數據與應用程序相關(與日誌不同)並需要訪問應用程序邏輯,那麼您最好自己編寫索引器。

相關問題