Heim > PHP-Framework > Laravel > Hauptteil

Verwendung von Scout zur Integration der Elasticsearch-Suchmaschine in Laravel

藏色散人
Freigeben: 2019-10-15 14:32:52
nach vorne
3368 Leute haben es durchsucht

Vorne geschrieben

Elasticsearch (im Folgenden als es bezeichnet) ist eine verteilte Such- und Analysemaschine in Echtzeit.

In Bezug auf Suchmaschinen gibt es nicht nur Elasticsearch, sondern auch Algolia, das in einem anderen Artikel erwähnt wurde, sowie Sphinx, Solr usw. In diesem Artikel wird hauptsächlich die Vorgehensweise vorgestellt Verwenden Sie Elasticsearch in Laravel.

Elasticsearch muss zuerst installiert werden.

Dieser Artikel basiert auf Laravel5.5, andere Versionen sind ähnlich.

Vorbereitung

Abhängige Pakete über Composer installieren

composer require laravel/scout
composer require tamayo/laravel-scout-elastic
Nach dem Login kopieren

Grundkonfiguration

In config/app hinzufügen der Dienstanbieter zum Provider-Array in der .php-Datei

// config/app.php
'providers' => [
    // ...
    Laravel\Scout\ScoutServiceProvider::class,
    // ...
    ScoutEngines\Elasticsearch\ElasticsearchProvider::class,
],
Nach dem Login kopieren

Verwenden Sie den folgenden Befehl, um die Scout-Konfigurationsdatei zu generieren

php artisan vendor:publish --provider="Laravel\Scout\ScoutServiceProvider"
Nach dem Login kopieren

Fügen Sie die Elasticsearch-Konfiguration zu config/scout.php hinzu

    'elasticsearch' => [
        'index' => env('ELASTICSEARCH_INDEX', 'laravel'),
        'hosts' => [
            env('ELASTICSEARCH_HOST', 'http://localhost:9200'),
        ],
    ],
Nach dem Login kopieren

Dann öffnen wir die .env-Datei und fügen die Konfiguration von Scout und Elasticsearch hinzu

# scout配置
SCOUT_DRIVER=elasticsearch
SCOUT_PREFIX=
# elasticsearch 配置
ELASTICSEARCH_INDEX=esdemo
# elasticsearch 地址
ELASTICSEARCH_HOST=http://172.30.6.1:9200
Nach dem Login kopieren

Erstellen Sie den Index

Erstellen Sie das Modell und füllen Sie das aus Daten

Erstellen Sie die Modell-App/Student.php, um spätere Tests zu erleichtern. Sie können Daten manuell mithilfe von SQL-Anweisungen hinzufügen oder Laravel zum automatischen Migrieren und Ausfüllen verwenden Daten.

<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
use Laravel\Scout\Searchable;
/**
 * 学生模型
 */
class Student extends Model
{
    use Searchable;
    /**
     * 索引名称
     *
     * @return string
     */
    public function searchableAs()
    {
        return &#39;students_index&#39;;
    }
    /**
     * 可搜索的数据索引
     *
     * @return array
     */
    public function toSearchableArray()
    {
        $array = $this->toArray();
        // Customize array...
        return $array;
    }
}
Nach dem Login kopieren

Alle vorhandenen Datensätze in den Suchindex importieren

php artisan scout:import "App\Student"
Nach dem Login kopieren

War der Import erfolgreich?

php artisan scout:import "App\Student"
Imported [App\Student] models up to ID: 500
Imported [App\Student] models up to ID: 1000
Imported [App\Student] models up to ID: 1500
Imported [App\Student] models up to ID: 2000
Imported [App\Student] models up to ID: 2500
Imported [App\Student] models up to ID: 3000
Imported [App\Student] models up to ID: 3500
Imported [App\Student] models up to ID: 4000
Imported [App\Student] models up to ID: 4500
Imported [App\Student] models up to ID: 5000
Imported [App\Student] models up to ID: 5500
Imported [App\Student] models up to ID: 6000
Imported [App\Student] models up to ID: 6500
Imported [App\Student] models up to ID: 7000
Imported [App\Student] models up to ID: 7500
Imported [App\Student] models up to ID: 8000
Imported [App\Student] models up to ID: 8500
Imported [App\Student] models up to ID: 9000
Imported [App\Student] models up to ID: 9500
Imported [App\Student] models up to ID: 10000
All [App\Student] records have been imported.
Nach dem Login kopieren

Wir besuchen es, http://172.30.6.1:9200/esdemo/students_index/_search

Haben Sie bereits die Indexdaten des Students_index, die Sie gerade importiert haben?

Fertig

$studens = App\Student::search(&#39;成燕&#39;)->get();
dd($studens);
Nach dem Login kopieren

Sie können versuchen, Millionen von Daten einzugeben. Ist die Abrufgeschwindigkeit viel schneller als die direkte Abfrage der Datenbank?

Weitere Informationen zur Verwendung finden Sie in der offiziellen Dokumentationhttps://www.elastic.co/guide/...

Weitere technische Artikel zu Laravel finden Sie unter Bitte besuchen Sie die Spalte Einführungs-Tutorial zum Laravel-Framework, um mehr zu erfahren!

Das obige ist der detaillierte Inhalt vonVerwendung von Scout zur Integration der Elasticsearch-Suchmaschine in Laravel. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:segmentfault.com
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 Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!