É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
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, ],
Utilisez la commande suivante pour générer le fichier de configuration scout
php artisan vendor:publish --provider="Laravel\Scout\ScoutServiceProvider"
Ajoutez la configuration elasticsearch à config/scout.php
'elasticsearch' => [ 'index' => env('ELASTICSEARCH_INDEX', 'laravel'), 'hosts' => [ env('ELASTICSEARCH_HOST', 'http://localhost:9200'), ], ],
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
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 'students_index'; } /** * 可搜索的数据索引 * * @return array */ public function toSearchableArray() { $array = $this->toArray(); // Customize array... return $array; } }
Importer tous les enregistrements existants dans l'index de recherche
php artisan scout:import "App\Student"
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.
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('成燕')->get(); dd($studens);
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!