php - Laravel中利用Scout集成Elasticsearch搜索引擎 - 技术圈 - SegmentFault 思否


本站和网页 https://segmentfault.com/a/1190000014230010 的作者无关,不对其内容负责。快照谨为网络故障时之索引,不代表被搜索网站的即时页面。

php - Laravel中利用Scout集成Elasticsearch搜索引擎 - 技术圈 - SegmentFault 思否注册登录问答专栏标签招聘活动发现✓使用“Bing”搜本站使用“Google”搜本站使用“百度”搜本站站内搜索注册登录Laravel中利用Scout集成Elasticsearch搜索引擎JonLee94121323关注作者首页专栏技术圈文章详情9Laravel中利用Scout集成Elasticsearch搜索引擎JonLee94121323发布于2018-04-08  写在前面Elasticsearch(以下简称es)是一个实时的分布式搜索和分析引擎。在搜索引擎方面,不仅仅有Elasticsearch,像另一篇提到的Algolia,还有sphinx、Solr等等,这里不做评价和比较,本篇主要介绍laravel中如何使用Elasticsearch。首选必须安装有Elasticsearch,请参考 https://www.tech1024.com/orig... 。本文基于laravel5.5,其他版本大同小异。准备工作通过composer安装依赖包composer require laravel/scout
composer require tamayo/laravel-scout-elastic基本配置在config/app.php文件中的providers数组中加入服务提供者// config/app.php
'providers' => [
// ...
Laravel\Scout\ScoutServiceProvider::class,
// ...
ScoutEngines\Elasticsearch\ElasticsearchProvider::class,
],使用以下命令生成scout配置文件php artisan vendor:publish --provider="Laravel\Scout\ScoutServiceProvider"在config/scout.php中加入elasticsearch的配置 'elasticsearch' => [
'index' => env('ELASTICSEARCH_INDEX', 'laravel'),
'hosts' => [
env('ELASTICSEARCH_HOST', 'http://localhost:9200'),
],
],然后我们打开.env文件,加入scout和elasticsearch的配置# scout配置
SCOUT_DRIVER=elasticsearch
SCOUT_PREFIX=
# elasticsearch 配置
ELASTICSEARCH_INDEX=esdemo
# elasticsearch 地址
ELASTICSEARCH_HOST=http://172.30.6.1:9200创建索引创建模型并填充数据创建模型app/Student.php,为方便后续测试,请先建表和填充数据,可以手动使用sql语句添加数据,也使用laravel自动的数据迁移和填充,可以参考 https://www.tech1024.cn/origi...<?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;
把所有现有记录导入到搜索索引里php artisan scout:import "App\Student"是不是导入成功了呢?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.我们访问es,http://172.30.6.1:9200/esdemo...是不是已经有了刚刚导入的students_index索引数据大功告成$studens = App\Student::search('成燕')->get();
dd($studens);可以填充个百万条数据试试,检索速度,是不是比直接查询数据库要快很多呢?更多用法请查阅官方文档 https://www.elastic.co/guide/...原文: http://www.tech1024.com/origi...laravelelasticsearchphp阅读 7.3k更新于 2021-05-03 赞9收藏9分享本作品系原创,采用《署名-非商业性使用-禁止演绎 4.0 国际》许可协议技术圈学习、分享互联网人的专业知识,并帮助更多人在技术、职业生涯上获得成长。关注专栏被 1 篇内容引用elastic学习笔记JonLee作为一个IT职业人,941 声望18 粉丝关注作者0 条评论得票最新提交评论评论支持部分 Markdown 语法:**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用。你还可以使用 @ 来通知其他用户。推荐阅读CentOS 下给 php 安装 Xdebug 扩展Xdebug是PHP的一个扩展,可帮助开发者进行调试和开发。这里以源码编译安装的PHP为例,如果是yum或apt安装的php可以参考官网:Installation Xdebug。下载 Xdebug 源码 {代码...} 解压 {代码...} 编译安装 {代码......JonLee阅读 2.8kOne 一个简洁的博客、微博客系统代码:[链接]文档:[链接]系统预览首页:微博列表:微博详细:文章列表:文章详细:归档:搜索,目前只能依据分类、标签搜索😀:管理后台:Eyeswap赞 45阅读 2.2k评论 1怎样用 PHP 来实现枚举?在数学和计算机科学理论中,一个集的枚举是列出某些有穷序列集的所有成员的程序,或者是一种特定类型对象的计数。这两种类型经常(但不总是)重叠。枚举是一个被命名的整型常数的集合,枚举在日常生活中很常见,...唯一丶赞 25阅读 6.1k评论 4PHP 性能终极 Debug - 生成火焰图2012 年刚开始学习 PHP,那个时候的 PHP 应用很简单,没有太多复杂的设计模式,像依赖注入,工厂模式这些还几乎没有,Reflection API 那时也才刚出来,一个 PHP 应用就是一些包了前端代码的脚本文件,正是因为 PH...路易港赞 5阅读 3.4kLaravel : Syntax error or access violation: 1055 Error?上面这样一段代码, 测试服务器很好, 上线后报错了.Syntax error or access violation: 1055 Error : MySQL : isn't in GROUP BY云云小金子赞 7阅读 12k评论 4golang实现php里的serialize()和unserialize()序列和反序列方法Golang 实现 PHP里的 serialize() 、 unserialize()安装 {代码...} 用法 {代码...} github地址:[链接]JonLee赞 2阅读 6.6k郑方方打怪升级日记 — 初识HTML5与CSS3任务名称:响应式砸蛋页面任务背景前辈:方方啊,最近项目也没什么事情,你看这个砸蛋页面不是很好看,要不你做一个响应式砸蛋页面吧?系统:郑方方接下前辈的任务 - 郑方方自动解析任务步骤任务:响应式砸蛋页面HTML5与C...郑方方赞 1阅读 3.1k评论 3JonLee作为一个IT职业人,941 声望18 粉丝关注作者宣传栏文章目录跟随▲99产品热门问答热门专栏热门课程最新活动翻译酷工作课程Java 开发课程PHP 开发课程Python 开发课程前端开发课程移动开发课程资源每周精选用户排行榜帮助中心建议反馈合作关于我们广告投放职位发布讲师招募联系我们合作伙伴关注产品技术日志社区运营日志市场运营日志团队日志社区访谈条款服务协议隐私政策下载 AppCopyright © 2011-2022 SegmentFault. 当前呈现版本 22.12.19浙ICP备15005796号-2浙公网安备33010602002000号ICP 经营许可 浙B2-20201554杭州堆栈科技有限公司版权所有