Laravel怎么使用scout集成elasticsearch做全文搜索

发布时间 - 2021-04-14 00:00:00    点击率:

下面由laravel教程栏目给大家介绍laravel怎么使用scout集成elasticsearch做全文搜索,希望对需要的朋友有所帮助!

仅限于 es6.8版本
laravel 5.5版本

安装需要的组件

composer require tamayo/laravel-scout-elastic
composer require laravel/scout

如果composer require laravel/scout 出现报错

Using version ^6.1 for laravel/scout
./composer.json has been updated
Loading composer repositories with package information
Updating dependencies (including require-dev)
Your requirements could not be resolved to an installable set of packages.

  Problem 1
    - tamayo/laravel-scout-elastic 4.0.0 requires laravel/scout ^5.0 -> satisfiable by laravel/scout[5.0.x-dev].
    - tamayo/laravel-scout-elastic 4.0.0 requires laravel/scout ^5.0 -> satisfiable by laravel/scout[5.0.x-dev].
    - tamayo/laravel-scout-elastic 4.0.0 requires laravel/scout ^5.0 -> satisfiable by laravel/scout[5.0.x-dev].
    - Conclusion: don't install laravel/scout 5.0.x-dev
    - Installation request for tamayo/laravel-scout-elastic ^4.0 -> satisfiable by tamayo/laravel-scout-elastic[4.0.0].


Installation failed, reverting ./composer.json to its original content.

那么使用命令

composer require laravel/scout ^5.0

修改一下配置文件(config/app.php),添加如下两个provider

'providers' => [  
        //es search 加上以下内容  
        Laravel\Scout\ScoutServiceProvider::class,  
        ScoutEngines\Elasticsearch\ElasticsearchProvider::class,  
]

添加完成,执行命令,生成config文件

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

修改config/scout.php

    'driver' => env('SCOUT_DRIVER', 'elasticsearch'),

    'elasticsearch' => [
        'index' => env('ELASTICSEARCH_INDEX', '你的Index名字'),
        'hosts' => [
            env('ELASTICSEARCH_HOST', ''),
        ],
    ],

在.env 配置ES的 账号:密码@连接

ELASTICSEARCH_HOST=elastic:密码@你的域名.com:9200

创建一个生成mapping的命令行文件,到 app/Console/Commands

['elastic', 'yourPassword']]);
        $url = config('scout.elasticsearch.hosts')[0] . '/_template/news';
        $params = [
            'json' => [
                'template' => config('scout.elasticsearch.index'),
                'settings' => [
                    'number_of_shards' => 5
                ],
                'mappings' => [
                    '_default_' => [
                        'dynamic_templates' => [
                            [
                                'strings' => [
                                    'match_mapping_type' => 'string',
                                    'mapping' => [
                                        'type' => 'text',
                                        'analyzer' => 'ik_smart',
                                        'ignore_above' => 256,
                                        'fields' => [
                                            'keyword' => [
                                                'type' => 'keyword'
                                            ]
                                        ]
                                    ]
                                ]
                            ]
                        ]
                    ]
                ]
            ]
        ];
        $client->put($url, $params);

        // 创建index
        $url = config('scout.elasticsearch.hosts')[0] . '/' . config('scout.elasticsearch.index');

        $params = [
            'json' => [
                'settings' => [
                    'refresh_interval' => '5s',
                    'number_of_shards' => 5,
                    'number_of_replicas' => 0
                ],
                'mappings' => [
                    '_default_' => [
                        '_all' => [
                            'enabled' => false
                        ]
                    ]
                ]
            ]
        ];
        $client->put($url, $params);

    }
}

在kernel中注册这个命令

执行这个命令 生成 mapping

 php artisan es:init

修改model支持 全文搜索

hasOne(Star::class, 'id', 'star_id');
    }

    public function category()
    {
        return $this->hasOne(Category::class, 'id', 'category_id');
    }

    public static function getActivityIdByName($name)
    {
        return self::select('id')
            ->where([
                ['status', '=', 1],
                ['type_id', '=', 2],
                ['title', 'like', '%' . $name . '%']
            ])->get()->pluck('id');
    }

}

导入全文索引信息

php artisan scout:import "App\ActivityNews\Model\ActivityNews"

测试简单的全文索引

php artisan tinker

>>> App\ActivityNews\Model\ActivityNews::search('略懂皮毛')->get();
相关推荐:最新的五个Laravel视频教程


# laravel  # php  # composer  # es6  # require  # console  # elasticsearch  # 给大家  # 报错  # 创建一个  # 命令行  # 配置文件  # Installation  # request  # install  # satisfiable  # Conclusion 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: Google浏览器为什么这么卡 Google浏览器提速优化设置步骤【方法】  深圳网站制作的公司有哪些,dido官方网站?  Laravel怎么实现验证码功能_Laravel集成验证码库防止机器人注册  济南网站建设制作公司,室内设计网站一般都有哪些功能?  如何在景安服务器上快速搭建个人网站?  Laravel中间件如何使用_Laravel自定义中间件实现权限控制  微信小程序 input输入框控件详解及实例(多种示例)  mc皮肤壁纸制作器,苹果平板怎么设置自己想要的壁纸我的世界?  Laravel观察者模式如何使用_Laravel Model Observer配置  详解Android中Activity的四大启动模式实验简述  Laravel Asset编译怎么配置_Laravel Vite前端构建工具使用  如何在阿里云香港服务器快速搭建网站?  小视频制作网站有哪些,有什么看国内小视频的网站,求推荐?  Gemini手机端怎么发图片_Gemini手机端发图方法【步骤】  Laravel怎么实现一对多关联查询_Laravel Eloquent模型关系定义与预加载【实战】  PHP怎么接收前端传的文件路径_处理文件路径参数接收方法【汇总】  如何获取PHP WAP自助建站系统源码?  javascript中闭包概念与用法深入理解  如何在万网主机上快速搭建网站?  JavaScript实现Fly Bird小游戏  如何快速生成ASP一键建站模板并优化安全性?  phpredis提高消息队列的实时性方法(推荐)  Laravel怎么实现微信登录_Laravel Socialite第三方登录集成  Laravel如何设置定时任务(Cron Job)_Laravel调度器与任务计划配置  网站视频制作书签怎么做,ie浏览器怎么将网站固定在书签工具栏?  佛山企业网站制作公司有哪些,沟通100网上服务官网?  JavaScript 输出显示内容(document.write、alert、innerHTML、console.log)  Laravel Facade的原理是什么_深入理解Laravel门面及其工作机制  ai格式如何转html_将AI设计稿转换为HTML页面流程【页面】  Laravel如何使用Facades(门面)及其工作原理_Laravel门面模式与底层机制  如何在阿里云通过域名搭建网站?  Laravel如何集成第三方登录_Laravel Socialite实现微信QQ微博登录  头像制作网站在线观看,除了站酷,还有哪些比较好的设计网站?  如何挑选高效建站主机与优质域名?  nginx修改上传文件大小限制的方法  Laravel如何实现用户角色和权限系统_Laravel角色权限管理机制  英语简历制作免费网站推荐,如何将简历翻译成英文?  如何将凡科建站内容保存为本地文件?  PHP的CURL方法curl_setopt()函数案例介绍(抓取网页,POST数据)  如何快速建站并高效导出源代码?  Laravel的HTTP客户端怎么用_Laravel HTTP Client发起API请求教程  如何用wdcp快速搭建高效网站?  jimdo怎样用html5做选项卡_jimdo选项卡html5实现与切换效果【指南】  google浏览器怎么清理缓存_谷歌浏览器清除缓存加速详细步骤  Laravel如何实现邮箱地址验证功能_Laravel邮件验证流程与配置  如何彻底删除建站之星生成的Banner?  关于BootStrap modal 在IOS9中不能弹出的解决方法(IOS 9 bootstrap modal ios 9 noticework)  如何快速打造个性化非模板自助建站?  如何在阿里云域名上完成建站全流程?  Laravel如何自定义分页视图?(Pagination示例)