Heim >PHP-Framework >Laravel >Verwendung von Scout zur Integration der Elasticsearch-Suchmaschine in Laravel

Verwendung von Scout zur Integration der Elasticsearch-Suchmaschine in Laravel

藏色散人
藏色散人nach vorne
2019-10-15 14:32:523448Durchsuche

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

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,
],

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

php artisan vendor:publish --provider="Laravel\Scout\ScoutServiceProvider"

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

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

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

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;
    }
}

Alle vorhandenen Datensätze in den Suchindex importieren

php artisan scout:import "App\Student"

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.

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);

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!

Stellungnahme:
Dieser Artikel ist reproduziert unter:segmentfault.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen