ホームページ > php教程 > PHP开发 > Laravel5.3+Scout+ElasticSearch5.0

Laravel5.3+Scout+ElasticSearch5.0

高洛峰
リリース: 2016-11-15 14:44:23
オリジナル
1365 人が閲覧しました

システム環境

Ubuntu16.04、ElasticSearch5.0、JDK1.8

ElasticSearch5.0

公式ドキュメントの手順に従えば、通常は正常にインストールできます。
ただし、これはオンライン環境であり、他の人はまだ es2.4 を使用しています。第一に、プロジェクトが大きくなり、第二に、jdk のバージョンが異なるとメモリ要件も異なります。
es5.0 以降は、キャンセルされたためです。たとえば、elasticSearch-head は非常に一般的に使用されていますが、現在は Grunt を介して実行する必要があります。

インストール後に発生する可能性のある小さな問題:

$JAVA_HOME が見つかりませんが、/etc/default/elasticsearch ファイルを設定して JAVA_HOME=/usr を見つけることができます。 /local/java/jdk1.8.0_101/jre;

環境のメモリが小さすぎる場合はインストールしないでください。es5.0 がほぼ 2.5G のメモリを占有します。もちろん、ほとんどの人のコンピュータにはかなりのメモリが搭載されています。大量のメモリ。

Laravel/Scout をインストールして構成します

これらの 3 行を .env ファイルの最後に追加します

SCOUT_DRIVER=customElasticSearch
ELASTICSEARCH_INDEX=box
ELASTICSEARCH_HOST=localhost:9200
ログイン後にコピー

これらの 3 行の構成は、使用するエンジンとそのアドレスを決定するために Scout によって使用されます。

読者は、私のドライバーが elasticsearch ではなく、customElasticSearch であることに気づくかもしれません
ElasticSearchEngine を開いて、performSearch メソッドを見つけると、このコードが

$query = [
            'index' =>  $this->index,
            'type'  =>  $builder->model->searchableAs(),
            'body' => [
                'query' => [
                    'filtered' => [
                        'filter' => $filters,
                        'query' => [
                            'bool' => [
                                'must' => $matches
                            ]
                        ],
                    ],
                ],
            ],
        ];
ログイン後にコピー
内に見つかるためです。詳細については、公式 Web サイトのアドレスを参照してください。ただし、幸いなことに、Scout にはカスタム エンジンが用意されており、elasticSearchEngine を継承して書き換えます。その中で、2 か所を変更しました:

这只是演示, 要真使用以后一定要改
$matches[] = [
            'match' => [
                '字段名' => $builder->query
            ]
        ];
ログイン後にコピー
$query = [
            'index' => $this->index,
            'type' => $builder->model->searchableAs(),
            'body' => [
                'query' => [
                    'bool' => [
                        'filter' => $filters,
                        'must' => $matches,
                    ],
                ],
            ],
        ];
ログイン後にコピー

Scout を使用する場合の考えられる落とし穴

データベース テーブルに主キーが自動インクリメントされ名前付き ID を持つフィールドがあるが、そうでない場合、elasticSearch が必要な場合データ テーブルの ID を es ドキュメントの ID として使用するには、モデルの $primaryKey と public $incrementing = false; を変更する必要があります。これにより、現在のデータの他の値を指定できるようになります。 data_id の es 部分がデータベース ID であり、他の部分が新たに指定された場合、検索やその他の操作に影響します。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のおすすめ
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート