システム環境
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 ] ], ], ], ], ];
这只是演示, 要真使用以后一定要改 $matches[] = [ 'match' => [ '字段名' => $builder->query ] ];
$query = [ 'index' => $this->index, 'type' => $builder->model->searchableAs(), 'body' => [ 'query' => [ 'bool' => [ 'filter' => $filters, 'must' => $matches, ], ], ], ];
データベース テーブルに主キーが自動インクリメントされ名前付き ID を持つフィールドがあるが、そうでない場合、elasticSearch が必要な場合データ テーブルの ID を es ドキュメントの ID として使用するには、モデルの $primaryKey と public $incrementing = false; を変更する必要があります。これにより、現在のデータの他の値を指定できるようになります。 data_id の es 部分がデータベース ID であり、他の部分が新たに指定された場合、検索やその他の操作に影響します。