Heim > php教程 > PHP开发 > Hinweise zu Laravel5.3 Scout ElasticSearch5.0

Hinweise zu Laravel5.3 Scout ElasticSearch5.0

大家讲道理
Freigeben: 2016-11-11 09:11:11
Original
1463 Leute haben es durchsucht

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
                            ]
                        ],
                    ],
                ],
            ],
        ];
Nach dem Login kopieren

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
            ]
        ];
Nach dem Login kopieren
$query = [            'index' => $this->index,            'type' => $builder->model->searchableAs(),            'body' => [                'query' => [                    'bool' => [                        'filter' => $filters,                        'must' => $matches,
                    ],
                ],
            ],
        ];
Nach dem Login kopieren

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.


Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Empfehlungen
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage