ElasticSearch5.0
Es hat keinen Sinn, es5.0 zu installieren, solange Sie dem offiziellen Dokumentprozess folgen, können Sie es normalerweise erfolgreich installieren und ausführen
In der Online-Umgebung gibt es jedoch immer noch andere. Bei der Verwendung von es2.4 ist erstens das Projekt größer und zweitens haben verschiedene Versionen von JDK unterschiedliche Speicheranforderungen.
Und nach es5.0 aufgrund der Stornierung von Site-Plugin, viele Plug-Ins können nicht dem vorherigen folgen. ElasticSearch-head wird beispielsweise sehr häufig verwendet und muss jetzt über Grunt ausgeführt werden. Oder legen Sie andere Plug-Ins zur Ausführung in das WWW-Verzeichnis von Nginx oder Apache.
Kleine Probleme, die nach der Installation auftreten können:
$JAVA_HOME kann nicht gefunden werden, ist aber tatsächlich installiert. Sie können /etc/default/elasticsearch einrichten und finden JAVA_HOME=/usr/local/java/jdk1.8.0_101/jre;
Nicht installieren, wenn der Umgebungsspeicher zu klein ist. es5.0 belegt fast 2,5 GB mein Gedächtnis. Natürlich haben die meisten Computer jetzt viel Speicher;
Installieren und konfigurieren Sie Laravel/Scout
Fügen Sie diese drei Zeilen hinzu am Ende der .env-Datei
SCOUT_DRIVER=customElasticSearchELASTICSEARCH_INDEX=boxELASTICSEARCH_HOST=localhost:9200
Diese drei Konfigurationszeilen werden von Scout verwendet, um zu bestimmen, welche Engine Sie verwenden und welche Adresse der Suchmaschine.
Leser stellen möglicherweise fest, dass mein Treiber „customElasticSearch“ und nicht „elasticalsearch“ ist.
Denn wenn Sie ElasticSearchEngine öffnen und darin die performSearch-Methode finden, finden Sie diesen Codeabschnitt
$query = [ 'index' => $this->index, 'type' => $builder->model->searchableAs(), 'body' => [ 'query' => [ 'filtered' => [ 'filter' => $filters, 'query' => [ 'bool' => [ 'must' => $matches ] ], ], ], ], ];
Wenn Sie die Suchmethode direkt ausführen, wird Ihnen mitgeteilt, dass die Filterung abgebrochen wurde. Weitere Informationen finden Sie auf der offiziellen Website-Adresse.
Sie können den Paketcode jedoch nicht direkt ändern. Glücklicherweise bietet Scout einen benutzerdefinierten Code an Engine.
Also erstellen wir eine neue benutzerdefinierteElasticSearchEngine, erben die elasticSearchEngine und schreiben die performSearch-Methode neu. Darin habe ich zwei Stellen geändert:
这只是演示, 要真使用以后一定要改$matches[] = [ 'match' => [ '字段名' => $builder->query ] ];
$query = [ 'index' => $this->index, 'type' => $builder->model->searchableAs(), 'body' => [ 'query' => [ 'bool' => [ 'filter' => $filters, 'must' => $matches, ], ], ], ];
Mögliche Fallstricke von Verwenden von Scout
Wenn Ihre Tabelle in der Datenbank ein Feld namens „id“ mit einem automatisch inkrementierten Primärschlüssel hat, Sie dies jedoch nicht tun. Wenn Sie möchten, dass elasticSearch die ID von verwendet die Datentabelle als ID des Dokuments von es, dann müssen Sie den $primaryKey des Modells und public $incrementing = false;, damit Sie andere Werte in der aktuellen Datentabelle angeben können, die als ID von es dienen, wenn ein Teil der es-Daten _id stammt die Datenbankid, und der andere Teil wird von Ihnen neu angegeben, was sich auf Ihre Suche und andere Vorgänge auswirkt.