Systemumgebung
Ubuntu16.04, ElasticSearch5.0, JDK1.8
ElasticSearch5.0
Es macht keinen Sinn, es5.0 zu installieren, Befolgen Sie einfach den offiziellen Dokumentprozess, der im Allgemeinen erfolgreich installiert und ausgeführt werden kann. In der Online-Umgebung verwenden andere jedoch immer noch es2.4. Erstens ist das Projekt groß und zweitens haben verschiedene Versionen von JDK unterschiedliche Speicher
Und nach es5.0 können viele Plug-Ins aufgrund der Abschaffung des Site-Plugins nicht mehr auf die bisherige Weise installiert werden. Beispielsweise muss das sehr häufig verwendete Plug-In „ElasticSearch-Head“ jetzt ausgeführt werden über Grunt. Oder andere Plug-Ins werden in das WWW von Nginx oder Apache gelegt.
SCOUT_DRIVER=customElasticSearch ELASTICSEARCH_INDEX=box ELASTICSEARCH_HOST=localhost:9200Diese drei Konfigurationszeilen werden von Scout verwendet, um zu bestimmen, welche Engine Sie verwenden und die Adresse der Suchmaschine.Leser Möglicherweise stellen Sie fest, dass mein Treiber „customElasticSearch“ und nicht „elasticalsearch“ ist.
Denn wenn Sie ElasticSearchEngine öffnen und die performSearch-Methode finden, finden Sie diesen Code darin.
$query = [ 'index' => $this->index, 'type' => $builder->model->searchableAs(), 'body' => [ 'query' => [ 'filtered' => [ 'filter' => $filters, 'query' => [ 'bool' => [ 'must' => $matches ] ], ], ], ], ];Wenn Sie die Suchmethode direkt ausführen, werden Sie dies tun Bitte beachten Sie, dass der Filtervorgang abgebrochen wurde.
Sie können den Paketcode jedoch nicht direkt ändern.
这只是演示, 要真使用以后一定要改 $matches[] = [ 'match' => [ '字段名' => $builder->query ] ];
$query = [ 'index' => $this->index, 'type' => $builder->model->searchableAs(), 'body' => [ 'query' => [ 'bool' => [ 'filter' => $filters, 'must' => $matches, ], ], ], ];Es ist möglich, Scout Pitfall zu verwendenWenn Ihre Tabelle in der Datenbank eine hat Feld mit dem Namen id mit einem automatisch inkrementierten Primärschlüssel, aber Sie möchten nicht, dass ElasticSearch die ID der Datentabelle als ID des es-Dokuments verwendet, dann müssen Sie den $primaryKey des Modells ändern Und public $incrementing = false; , sodass Sie andere Werte der aktuellen Datentabelle angeben können, die als ID von es dienen sollen. Wenn ein Teil der _id der es-Daten die ID der Datenbank ist und der andere Teil von Ihnen neu angegeben wird Dies führt dazu, dass sowohl Ihre Suche als auch andere Vorgänge beeinträchtigt werden.