laravel Scout使用elasticsearch搜索引擎

3分钟短文:Laravel连接全文搜索引擎,加快查询速度 引言 对于数据库查询,主键和索引往往是加速搜索的利器。而对于文本搜索, 模糊搜索,全文检索,MySQL的MyISAM引擎虽然支持,但是性能往往不能达到生产的需求, 或者说服务带载能力太弱。 我们需要专门的文本搜索引擎,并且连接到laravel应用程序内,这就是本文所要说的Scout。 代码时间 laravel scout 是一个独立的包和类库,可以很方便地通过composer接入系统, 且与Eloquent Model模型关联使用。 官方scout内置了 Algolia 和 Elasticsearch 驱 阅读详情

Laravel Scout 是针对Eloquent 模型开发的一个简单的,基于驱动的全文检索系统。Scout 使用模型观察者时会自动保持你的检索索引与你的 Eloquent 记录同步。
目前,Scout 带着一个Algolia驱动;然而,扩展 Scout 并不难,你可以通过自定义驱动来自由的扩展 Scout。Scout的使用请看文档Scout 全文搜索

docker安装elasticsearch

docker run -d --name es -v /Users/chen/data/docker/es:/data/es -v /Users/chen/data/docker/es/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" elasticsearch:6.8.5

主要参数说明:
-d 后台守护进程
--name 为容器命名
-v 挂载文件,这里是把当前宿主机的目录 挂载到容器的项目目录上

elasticsearch.yml 文件内容

cluster.name: "docker-cluster"
network.host: 0.0.0.0

path.data: /data/es/data

http.cors.enabled: true
http.cors.allow-origin: "*"

浏览器访问:http://127.0.0.1:9200 就能看到es版本信息

Scout配置文件

//config/scout.php文件中添加下面代码

//这里是添加的代码
    'elasticsearch' => [
        'index' => env('ELASTICSEARCH_INDEX', 'laravel1'),
        'hosts' => [
            env('ELASTICSEARCH_HOST', 'http://127.0.0.1:9200'),
        ],
    ],

创建es索引

php artisan make:command ESInitUser
<?php

namespace App\Console\Commands;

use GuzzleHttp\Client;
use Illuminate\Console\Command;

class ESInitUser extends Command
{
   /**
    * The name and signature of the console command.
    *
    * @var string
    */
   protected $signature = 'es:init:user';

   /**
    * The console command description.
    *
    * @var string
    */
   protected $description = 'Command description';

   /**
    * Create a new command instance.
    *
    * @return void
    */
   public function __construct()
   {
       parent::__construct();
   }

   /**
    * Execute the console command.
    *
    * @return mixed
    */
   public function handle()
   {
       //创建template
       $client = new Client();

       $url = config('scout.elasticsearch.hosts')[0] . '/_template/users';
       //$client->delete($url);

       $param = [
           'json' => [
               'template' => config('scout.elasticsearch.index'),
               'mappings' => [
                   '_default_' => [
                       'dynamic_templates' => [
                           [
                               'analyzer_fileds' => [
                                   'match' => 'username',
                                   'match_mapping_type' => 'string',
                                   "mapping" => [
                                       "type" => "text",
                                       "norms" => false,
                                       "analyzer" => "ik_max_word",//elasticsearch 要安装 ik分词插件,不然数据无法导入
                                       "search_analyzer" => "ik_smart"
                                   ]
                               ]
                           ],
                           [
                               'date_fileds' => [
                                   'match' => 'createtime',
                                   'match_mapping_type' => 'string',
                                   "mapping" => [
                                       "type" => "date",
                                       "format" => "yyyy-MM-dd HH:mm:ss"
                                   ]
                               ]
                           ]
                       ]
                   ]
               ],
           ],
       ];
       $client->put($url, $param);

       //记录
       $this->info("=======创建模板成功=======");

       //创建index
       $url = config('scout.elasticsearch.hosts')[0] . '/' . config('scout.elasticsearch.index');
       $client->delete($url);
       $param = [
           'json' => [
               'settings' => [
                   'refresh_interval' => '5s',
                   'number_of_shards' => 1,
                   'number_of_replicas' => 0,
               ],
               'mappings' => [
                   '_default_' => [
                       '_all' => [
                           'enabled' => false
                       ]
                   ]
               ]
           ]
       ];

       $client->put($url, $param);

       //记录
       $this->info("=========创建索引成功=========");
   }
}

model代码

需要修改model里的代码

/**
 * App\Models\User
 *
 * @property int $id
 * @property string $username 用户名
 * @property string $createtime 创建时间
 */
class User extends Model
{
    use Searchable;
    public function searchableAs()
    {
        // 对应es里的_type,相当于mysql表的概念
        return 'users_index';
    }

    public function toSearchableArray()
    {
        $array = $this->toArray();
        return $array;
    }
}

导入数据

php artisan scout:import "\App\Models\User"

es表内容



如果需要在Logstash导入es,可以参考下方地址

logstash 导入es配置文件,可参考 https://www.jianshu.com/p/9b24df449851

uniapp [安卓苹果App端] - 详细实现自定义水印相机功能,调用手机摄像头打开相机并在周围悬挂自定义水印,使用相机拍照后添加水印文字或样式,uniapp APP端水印相机完整源码,兼容强大可靠 uni-app,安卓Android,苹果ios,安卓app端,苹果App端,uniapp苹果app,水印相机,uniapp水印相机,Uniapp安卓app实现水印相机,uniapp苹果ios水印相机,打开系统相机拍照添加水印,地点打卡相机,水印相机(水印照片,图片加水印),uniapp自定义水印相机,制作水印相机给图片添加水印并且保存图片至本地,uniapp拍照图片加水印,水印相机功能,手机调起摄像头拍照时自动插入文字、图片动态水印效果,支持水印显示拍摄者当前城市定位、自由调整水印大小和位置,手机拍照时 阅读详情

相关推荐

Nginx国密HTTPS实战:SM2双证书部署与TongSuo编译指南

HTTPS作为保障网络通信安全的基石,其核心在于SSL/TLS协议与公钥基础设施(PKI)。它通过非对称加密实现身份认证与密钥交换,再结合对称加密确保数据传输的机密性与完整性。在金融、政务等对自主可控有严格要求的领域,采用符合国家密码管理局标准的国密算法(SM2/SM3/SM4)替代国际通用算法(如RSA/SHA-256/AES),已成为满足安全合规要求的关键技术路径。国密SSL不仅是一套算法替换,更涉及从底层密码库到上层应用服务的完整技术栈改造。其核心价值在于实现密码技术的自主可控,提升特定场景下的安全防

weixin_29323365的博客 497

php Laravel 使用elasticsearch+ik中文分词器搭建搜索引擎

在保证ES启动的情况下,在/www/server/Elasticsearch/elasticsearch-head-5.0.0目录中启动elasticsearch-head。在浏览器访问 http://你服务器的ip:9200端口,我的是"http://115.28.137.30:9200/"进入/www/server/Elasticsearch/elasticsearch-head-5.0.0目录。从新启动ES,在浏览器访问http://115.28.137.30:9200/看到如下界面表示成功。

特别剑的博客 3948

ALSA音频开发实战:如何用snd_pcm_avail避免缓冲区溢出(附完整代码)

本文深入探讨了在ALSA音频开发中,如何利用`snd_pcm_avail`函数有效管理环形缓冲区,从而避免音频数据溢出或下溢。通过实战代码示例,详细解析了该函数在播放场景下的核心作用,即实时查询可写入的帧数,并构建了自适应写入循环以实现稳健的流量控制,确保音频流的平滑与稳定。

weixin_29183637的博客 461

在 Laravel 项目中使用 Elasticsearch 做引擎,scout 全文搜索(小白出品, 绝对白话)

项目中需要搜索, 所以从零开始学习大家都在用的搜索神器 elasiticsearch. 刚开始 google 的时候, 搜到好多经验贴和视频(中文的, 英文的), 但是由于是第一次接触, 一点概念都没有, 大家介绍的方法又有点不尽相同, 所以有点懵逼, 最后经过层层筛选, 终于找到组织Elasticsearch: 权威指南. 这是中文翻译版的, 我目前觉得还可以哈, 语言比较朴实. 然后呢,...

weixin_34319374的博客 378

嵌入式开发避坑指南:用DWT做延时函数,这几个细节不注意代码会跑飞

本文深入探讨了在Cortex-M嵌入式开发中使用DWT实现精确延时函数的关键技巧与常见陷阱。针对DWT_CYCCNT计数器应用中的内核兼容性、溢出处理、编译器优化等五大核心问题,提供了工业级稳健解决方案,帮助开发者避免代码跑飞风险,实现微秒级高精度延时控制。

weixin_42653691的博客 158

零中频接收机实战:DC Offset的5种常见解决方案与调试技巧

本文针对零中频接收机中DC Offset这一核心挑战,深入剖析了其产生机理与对信号解调的严重影响。文章从实战角度出发,系统性地介绍了五种解决方案,包括硬件预防、数字域校正、I/Q不平衡联合校正等,并分享了关键的实验室调试与产线测试技巧,旨在帮助射频工程师有效提升接收机性能。

weixin_29234509的博客 397

使用Laravel Scout和Elasticsearch的案例

Laravel Scout是一个流行的全文搜索解决方案,它与Elasticsearch等搜索引擎集成,提供了强大的搜索功能。在本篇文章中,我们将探讨如何在Laravel应用程序中使用Laravel Scout和Elasticsearch来实现高效的全文搜索功能。

PqjoPuppet的博客 405

如何下载安装Qt各个版本?(2025-4-28更新)

本文将教您快速获取Qt各版本安装包!妈妈再也不用担心我找不到Qt安装包了!

程序区 5113

laravel如何使用scout+elasticsearch搜索,并支持IK分词

laravel使用es实现全文搜索 laravel-scout-elastic,本扩展包支持IK分词设置。

烟雨弥漫了江南的博客 1412

Win10本地账户密码遗忘?巧用指纹/PIN快速重置(家庭版/专业版通用指南)

本文提供了一份详细的Win10本地账户密码遗忘自救指南,适用于家庭版和专业版用户。核心方法是利用已登录的指纹或PIN码权限,通过创建新的管理员账户或使用系统工具,安全重置遗忘的本地账户密码,无需第三方工具或重装系统,有效保护个人数据。

e6f7g8h9i的博客 576

VMware虚拟机调用NVIDIA显卡全攻略:从3D加速到直通与vGPU

显卡虚拟化技术是虚拟化领域的关键组成部分,它通过在虚拟机中模拟或直接分配物理GPU资源,实现了图形渲染与通用计算的加速。其核心原理在于通过Hypervisor层对GPU指令进行拦截、转换或直接映射,从而平衡资源隔离与性能损耗。这项技术的核心价值在于提升资源利用率、实现计算环境隔离,并支持AI训练、3D渲染、科学计算等高性能负载的灵活部署。在应用场景上,轻量级图形界面加速、CUDA学习验证适合使用虚拟3D加速;而追求极致性能的机器学习训练、专业渲染则需依赖PCIe直通技术;对于企业级GPU资源池化与多租户共享

weixin_32308101的博客 1007

Two.js Two.Arc 弧形路径全面解析:构造参数、属性与源码实现

**Two.Arc** 是 two.js(一个与渲染器无关的 Web 二维绘图 API)在 `extras` 模块中提供的一种基于弧线的图形原语,它继承自 [Two.Path](https://link.gitcode.com/i/fcc13a7a2f22a813f189d88648ef27cf),用于绘制任意起止角度、任意横纵直径的开放弧形(而非封闭的圆环或扇形)。本文以 [arc 官方文档](

gitblog_00048的博客 910

【生信】全基因组测序(WGS)

1、全基因组测序(WGS) 的定义 2、GWS流程 2.1准备工作——分析软件 2.2原始数据质控 2.3数据预处理 2.4变异检测

weixin_40695088的博客 4万+

Laravel 之搜索引擎elasticsearch扩展Scout

简介 Laravel Scout 是针对Eloquent 模型开发的一个简单的,基于驱动的全文检索系统。Scout 使用模型观察者时会自动保持你的检索索引与你的 Eloquent 记录同步。 目前,Scout 带着一个Algolia驱动;然而,扩展 Scout 并不难,你可以通过自定义驱动来自由的扩展 Scout。接下来我们就自定义搜索引擎elasticsearch来扩展Scou...

axfcjwkbi259888707的博客 185

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

Laravel 下 Elasticsearch 使用

安装 scout composer require laravel/scout 在config/app.php 的 providers 数组中添加 Laravel\Scout\ScoutServiceProvider::class 执行命令 php artisan vendor:publish --provider="Laravel\Scout\ScoutServiceProvider 安装...

NYYandYF的博客 825

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

laravel 自定义Elasticsearch引擎 Scout

自定义引擎如果内置的 Scout 搜索引擎不能满足你的需求,你可以写自定义的引擎并且将它注册到 Scout。你的引擎需要继承 Laravel\Scout\Engines\Engine 抽象类,这个抽象类包含了你自定义的引擎必须要实现的五种方法use Laravel\Scout\Builder; abstract public function update($models); abstract ...

qq_26563299的博客 906

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

laravel scout+es 使用

具体如何使用参考https://blog.youkuaiyun.com/qq_16829085/article/details/80725125 另外对于scout更详细的用法请参考https://www.jianshu.com/p/8f9d653d34e1 这里主要说下遇到的情况和觉得库的不足的地方 1,我开始是打算先不安装ik,直接先用用看,然后发现使用sout:import导入数据能导入成功...

niezuxue的专栏 1719

PHP站内搜索功能(laravel自带Scout驱动+elasticsearch)

站内搜索 由于最近做的网站需要用到网站的站内搜索,我也是偷偷摸摸学了一手,希望有需要的朋友也可以看看 搜索引擎 Elasticsearch 官方网站 https://www.elastic.co/cn/ 原理:输入内容与内存中的想匹配找到对应的文档输出 Elasticsearch的中文支持主要依靠medcl Elasticsearch 基本概念 索引 服务器地址 端口 index:...

qq_40128367的博客 3317

基于 centos7 搭建 laravel+scout+elasticsearch+ik-analyzer 用于中文分词全文检索服务及测试

基于 centos7 搭建 laravel+scout+elasticsearch+ik-analyzer 用于中文分词全文检索服务及测试

丁丁丁梦涛的博客 2684

Laravel 以ElasticSearch的方式使用scout

Laravel5.3已经发布了,这次版本多了一个官方工具包:scout。这个包的作用就是帮助大家更好的将全文检索工具和项目更好的结合,让开发者使用起来更方便。但是我发现了一个问题:Laravel官方文档对于scout的使用说明并没有那么详细,只讲了如何将检索工具“Algolia”(法国一家公司提供的检索PaaS服务)和Laravel结合的使用方式,而没有讲使用ElasticSearch的方式...

菜刚RyuGou的专栏 8296

laravel controller update无效_3分钟短文:Laravel连接全文搜索引擎,加快查询速度

引言对于数据库查询,主键和索引往往是加速搜索的利器。而对于文本搜索, 模糊搜索,全文检索,MySQL的MyISAM引擎虽然支持,但是性能往往不能达到生产的需求, 或者说服务带载能力太弱。我们需要专门的文本搜索引擎,并且连接到laravel应用程序内,这就是本文所要说的Scout。代码时间laravel scout 是一个独立的包和类库,可以很方便地通过composer接入系统, 且与Eloquen...

weixin_42511491的博客 247

使用ElasticSearch优化Laravel搜索:matchish/laravel-scout-elasticsearch指南

使用ElasticSearch优化Laravel搜索:matchish/laravel-scout-elasticsearch指南 项目介绍 matchish/laravel-scout-elasticsearch 是一个专门为 Laravel 框架设计的扩展包,它允许开发者无缝地集成 ElasticSearch 到 Laravel Scout 中。此工具简化了在多模型间进行高效搜索的任务,同时确...

gitblog_00987的博客 1349

laravel5.5-5.4 +ES6.4.0 +IK6.4.0+scout5.0 (版本必须,如果ES为7 scout中的paginate分页函数会失效)

记录下 几个前辈探的路: 1. laravel 5.4 +demo 讲的很明确 我也确实安装了 存在一些小BUG 无伤大雅,分享给大家 GIT上有代码 https://learnku.com/articles/4027/tutorial-write-a-search-use-laravel-scout-elasticsearch-ik-word-segmentation ...

会飞的小蜗 408

laravel使用scout和elasticsearch中文分词ik

安装es和ik: 参考链接: https://blog.youkuaiyun.com/zhezhebie/article/details/105482149 安装composer包: https://github.com/baijunyao/laravel-scout-elasticsearch 在scout里面添加配置: 'elasticsearch' => [ 'prefix' =&...

阳水平的博客 438

Elasticsearch 存储,搜索和分析

添加索引: curl -X PUT "localhost:9200/index_name?pretty" https://www.cnblogs.com/quanxiaoha/p/11532487.html 查询: 官方:https://www.elastic.co/guide/en/elasticsearch/reference/current/search-search.html#re...

cxs812760493的博客 139

Laravel5.4中文分词搜索-使用 Laravel Scout,Elasticsearch,ik 分词(三)

上一篇地址:https://blog.youkuaiyun.com/huangfenhu/article/details/94009241 创建一个文章表和文章模型: php artisan make:model Models/Article -m 修改2019_06_27_064939_create_articles_table.php内容,给表articels添加字段: public functio...

huangfenhu的博客 1168
上一篇: logstash把mysql数据导入es所需配置
下一篇: 热重启golang服务器(graceful restart golang http server)
cqims21
博客等级 码龄18年 4粉丝 12原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值