Maison > cadre php > Laravel > Utiliser Scout pour intégrer le moteur de recherche Elasticsearch dans Laravel

Utiliser Scout pour intégrer le moteur de recherche Elasticsearch dans Laravel

藏色散人
Libérer: 2019-10-15 14:32:52
avant
3425 Les gens l'ont consulté

Écrit devant

Elasticsearch (ci-après dénommé es) est un moteur de recherche et d'analyse distribué en temps réel.

En termes de moteurs de recherche, il n'y a pas seulement Elasticsearch, mais aussi Algolia mentionné dans un autre article, ainsi que sphinx, Solr, etc. Il n'y aura pas d'évaluation et de comparaison ici. Cet article présente principalement comment le faire. utilisez Elasticsearch dans Laravel.

Elasticsearch doit être installé en premier.

Cet article est basé sur laravel5.5, les autres versions sont similaires.

Préparation

Installer les packages dépendants via composer

composer require laravel/scout
composer require tamayo/laravel-scout-elastic
Copier après la connexion

Configuration de base

Dans config/app Ajouter le fournisseur de services au tableau des fournisseurs dans le fichier .php

// config/app.php
'providers' => [
    // ...
    Laravel\Scout\ScoutServiceProvider::class,
    // ...
    ScoutEngines\Elasticsearch\ElasticsearchProvider::class,
],
Copier après la connexion

Utilisez la commande suivante pour générer le fichier de configuration scout

php artisan vendor:publish --provider="Laravel\Scout\ScoutServiceProvider"
Copier après la connexion

Ajoutez la configuration elasticsearch à config/scout.php

    'elasticsearch' => [
        'index' => env('ELASTICSEARCH_INDEX', 'laravel'),
        'hosts' => [
            env('ELASTICSEARCH_HOST', 'http://localhost:9200'),
        ],
    ],
Copier après la connexion

Ensuite, nous ouvrons le fichier .env et ajoutons la configuration de scout et elasticsearch

# scout配置
SCOUT_DRIVER=elasticsearch
SCOUT_PREFIX=
# elasticsearch 配置
ELASTICSEARCH_INDEX=esdemo
# elasticsearch 地址
ELASTICSEARCH_HOST=http://172.30.6.1:9200
Copier après la connexion

Créons l'index

Créons le modèle et remplissons le data

Créez le modèle app/Student.php. Pour faciliter les tests ultérieurs, veuillez d'abord créer des tableaux et remplir les données. Vous pouvez ajouter manuellement des données à l'aide d'instructions SQL ou utiliser Laravel pour migrer et remplir automatiquement. data.

<?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;
    }
}
Copier après la connexion

Importer tous les enregistrements existants dans l'index de recherche

php artisan scout:import "App\Student"
Copier après la connexion

L'importation a-t-elle réussi ?

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.
Copier après la connexion

Nous visitons es, http://172.30.6.1:9200/esdemo/students_index/_search

Avez-vous déjà les données de l'index Students_index que vous venez d'importer ?

Terminé

$studens = App\Student::search(&#39;成燕&#39;)->get();
dd($studens);
Copier après la connexion

Vous pouvez essayer de remplir des millions de données. La vitesse de récupération est-elle beaucoup plus rapide que l'interrogation directe de la base de données ?

Pour plus d'utilisation, veuillez vous référer à la documentation officiellehttps://www.elastic.co/guide/...

Pour plus d'articles techniques liés à Laravel, veuillez visiter la colonne Tutoriel d'introduction au framework Laravel pour apprendre !

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:segmentfault.com
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal