摘要:导语上篇文章搭建了容器以及添加了测试数据,这篇来配置以及使用。最终根据这篇文章修改而来。关于分词以及和的区别,不在这里赘述了,可以看下这篇文章。
导语
上篇文章搭建了 Elasticsearch 容器以及添加了测试数据,这篇来配置以及使用。
安装扩展包以及配置composer require tamayo/laravel-scout-elastic
在 config/app.php 中 providers 添加 LaravelScoutScoutServiceProvider::class 和 ScoutEnginesElasticsearchElasticsearchProvider::class,
发布配置文件 php artisan vendor:publish --provider="LaravelScoutScoutServiceProvider"
在 config/scout.php 添加
"elasticsearch" => [ "index" => env("ELASTICSEARCH_INDEX", "laravel"), "hosts" => [ env("ELASTICSEARCH_HOST", "http://localhost"), ], ],
编辑 .env 文件,所以添加如下配置项
SCOUT_DRIVER=elasticsearch ELASTICSEARCH_INDEX=laravel_index ELASTICSEARCH_HOST=elasticsearch #因为环境是 laradock修改模型配置
修改 app/Models/FakeArticle.php 文件如下
only("author", "title", "content"); } }设置 Elasticsearch 分词策略
这一步是花费时间最多的地方,查的资料要么是过时的,要么根本不能运行。最终根据这篇文章修改而来。
关于 ik 分词以及 ik_max_word 和 ik_smart 的区别,不在这里赘述了,可以看下这篇文章。
新建文件 php artisan make:command InitEs,编辑如下
createTemplate($client); $this->createIndex($client); } /** * 创建模板 see https://www.elastic.co/guide/en/elasticsearch/reference/current/dynamic-templates.html * @param Client $client */ private function createTemplate(Client $client) { $url = config("scout.elasticsearch.hosts")[0] . ":9200/_template/template_1"; $client->put($url, [ "json" => [ "template" => config("scout.elasticsearch.index"), "settings" => [ "number_of_shards" => 1, ], "mappings" => [ "_default_" => [ "dynamic_templates" => [ // 动态映射模板 [ "string_fields" => [ // 字段映射模板的名称,一般为"类型_fields"的命名方式 "match" => "*", // 匹配的字段名为所有 "match_mapping_type" => "string", // 限制匹配的字段类型,只能是 string 类型 "mapping" => [ // 字段的处理方式 "type" => "text", // 字段类型限定为 string "analyzer" => "ik_max_word", // 字段采用的分析器名,默认值为 standard 分析器 "fields" => [ "raw" => [ "type" => "keyword", "ignore_above" => 256, // 字段是索引时忽略长度超过定义值的字段。 ] ], ], ], ], ], ], ], ], ]); } /** * 创建索引 * @param Client $client */ private function createIndex(Client $client) { $url = config("scout.elasticsearch.hosts")[0] . ":9200/" . config("scout.elasticsearch.index"); $client->put($url, [ "json" => [ "settings" => [ "refresh_interval" => "5s", "number_of_shards" => 1, // 分片为 "number_of_replicas" => 0, // 副本数 ], "mappings" => [ "_default_" => [ "_all" => [ "enabled" => false, // 是否开启所有字段的检索 ], ], ], ], ]); } }使用
php artisan init:es
php artisan scout:import "AppModelsFakeArticle"
搜索的时候使用 FakeArticle::search("搜索词")->get();
结语测试后没有问题,可以正常搜索。更多的方法参考这里。
参考资料:Elastic Driver for Laravel Scout、Laravel Scout + Elasticsearch + ik 分词
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/34510.html
摘要:导语全文搜索是很重要的功能,实现的方式也有很多种。以下通过和实现。是用开发的,并在许可证下作为开源软件发布。官方客户端在和许多其他语言中都是可用的。根据的排名显示,是最受欢迎的企业搜索引擎,其次是,也是基于。 导语 全文搜索是很重要的功能,实现的方式也有很多种。以下通过 Laravel Scout 和 Elasticsearch 实现。先来看下各自的介绍 Laravel Scout 为...
摘要:导语全文搜索是很重要的功能,实现的方式也有很多种。以下通过和实现。是用开发的,并在许可证下作为开源软件发布。官方客户端在和许多其他语言中都是可用的。根据的排名显示,是最受欢迎的企业搜索引擎,其次是,也是基于。 导语 全文搜索是很重要的功能,实现的方式也有很多种。以下通过 Laravel Scout 和 Elasticsearch 实现。先来看下各自的介绍 Laravel Scout 为...
摘要:写在前面以下简称是一个实时的分布式搜索和分析引擎。在搜索引擎方面,不仅仅有,像另一篇提到的,还有等等,这里不做评价和比较,本篇主要介绍中如何使用。首选必须安装有,请参考。本文基于,其他版本大同小异。 写在前面 Elasticsearch(以下简称es)是一个实时的分布式搜索和分析引擎。 在搜索引擎方面,不仅仅有Elasticsearch,像另一篇提到的Algolia,还有sphinx、...
摘要:写在前面以下简称是一个实时的分布式搜索和分析引擎。在搜索引擎方面,不仅仅有,像另一篇提到的,还有等等,这里不做评价和比较,本篇主要介绍中如何使用。首选必须安装有,请参考。本文基于,其他版本大同小异。 写在前面 Elasticsearch(以下简称es)是一个实时的分布式搜索和分析引擎。 在搜索引擎方面,不仅仅有Elasticsearch,像另一篇提到的Algolia,还有sphinx、...
摘要:至于其他的算一般我习惯说树形模型,这里说的概率模型可能是差不多的意思。 要点 不同工具之间版本匹配很重要由点及面,先实践起来再学细节的原理和使用 技术栈 laravel5.5框架+scout组件+elasticsearch6.3.0搜索引擎 辅助 elasticsearch-head 查看集群数据可视化 中文分词插件Ik 介绍 laravel是一款现代化的php框架es是搜索引擎e...
阅读 2175·2021-09-29 09:34
阅读 3084·2021-09-23 11:21
阅读 2323·2021-09-06 15:00
阅读 1003·2019-08-30 15:44
阅读 1898·2019-08-29 17:23
阅读 2871·2019-08-29 16:44
阅读 2932·2019-08-29 13:13
阅读 1832·2019-08-28 18:12