2017-08-27 15 views
2

私はelasticsearchを初めて使用しています。データをMysqlテーブルに追加し、laravelのelasticsearchも追加します。laravelのelasticsearchにデータを追加する最も良い方法は何ですか

私は、より少ないフィールドでmysqlに保存し、他のテーブルとリレーションを使用したいが、関連するすべてのフィールドを1つのelasticsearchタイプに埋め込みたい。

私はデータマイニングのためだけにelasticsearchを使用しています。

このデータをエラスティスに挿入する最も良い方法は何ですか?

データを挿入するか、直接挿入するにはlogstashを使用する必要がありますか?

この状況ではビートを使用する必要がありますか?

+0

を愛するシンプルかつエレガントな構文で配列のクエリを置き換えることによって、あなたの時間を無駄にからあなたを維持し、あなたはそれが同様に受け入れられたマークだろうか?:) –

+0

あなたの答えに感謝して、私はlaravelのログファイルに文書を記録し、私が望むようにlogstash設定ファイルを書いてから、elasticstarch –

答えて

0

ララベルは弾性抽出パッケージhttps://github.com/cviebrock/laravel-elasticsearchを持っています。それは、下に人気のあるPHPの弾性検索ライブラリを使用しますhttps://github.com/elastic/elasticsearch-php

あなたが一般的にelasticseachについてよく分からなければ、いくつかの文章でここで言うことができます。私は読まれることをお勧めします。https://www.elastic.co/guide/en/elasticsearch/client/php-api/current/_quickstart.html

+0

に送るためにlogstashを使いました。私はこれらのパッケージで伸縮性を追加する必要がありますか?またはlaravelログに追加して、それらのログをlogstashに追加しますか? –

0

@margusのようなphpにelasticsearchクライアントを使用することをお勧めします。あなたの問題を理解している限り、データを弾性に索引付けするには、2つの方法があります。おそらくあなたは(ユーザー登録などのような)ユーザの要求にMySQLにデータを挿入しているが、あなたは上のイベント発火考えることができれば

  1. (後でキューオフに処理することができたのmysqlを保存、およびスクリプトまたはlaravelコマンド)は、データをエラスティックに索引付けするためにイベントを消費できます。スクリプトには、必要なデータを必要な形式で取得するためのアプリケーションコードが含まれていることは明らかです。
    インデックスが重くない場合や、アプリケーションが多くのユーザーに対応していない場合は、mysqlの保存後にデータをエラスティックにインデックス付けし、タスクを延期しないようにすることができます。

  2. または、すべてのmysqlセーブ時にエラスティックインデックスを更新することが重要でない場合は、cronタスク(定期的に実行するようスケジュール設定できるもの)を設定し、そこにフェッチとインデックスを作成できます。

私はlogstashで働いていないが、私はその主なユースケースは、logstash configファイルで解析され、摂取サーバと同期することができますサーバー上のログファイルをオフに読んでいると思います。私は確信していませんが、mysqlから読めるようにするプラグインがあるかもしれませんが、logstash設定ファイルに複雑なアプリケーションロジックを書く力はありません。 可能であれば、私はアプリケーション内でアプリケーション関連のコードを書く方が好きです(他の開発者が読むことができ、すべてが同じリポジトリにあるので簡単に変更できます)。したがって、あなたが弾性で索引付けしているデータが(ログとは異なり)アプリケーションと関連性があり、アプリケーションロジックにアクセスする必要がある場合は、自分でインデクサーを作成する方がよいでしょう。

関連する問題