资讯专栏INFORMATION COLUMN

Laravel 基于 Scout 配置实现 Elasticsearch (二)- 配置以及使用

jerryloveemily / 3223人阅读

摘要:导语上篇文章搭建了容器以及添加了测试数据,这篇来配置以及使用。最终根据这篇文章修改而来。关于分词以及和的区别,不在这里赘述了,可以看下这篇文章。

导语

上篇文章搭建了 Elasticsearch 容器以及添加了测试数据,这篇来配置以及使用。

安装扩展包以及配置

composer require tamayo/laravel-scout-elastic

config/app.phpproviders 添加 LaravelScoutScoutServiceProvider::classScoutEnginesElasticsearchElasticsearchProvider::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_wordik_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 和 Elasticsearch 实现。先来看下各自的介绍 Laravel Scout 为...

    jsyzchen 评论0 收藏0
  • Laravel 基于 Scout 配置实现 Elasticsearch (一)- 准备工作

    摘要:导语全文搜索是很重要的功能,实现的方式也有很多种。以下通过和实现。是用开发的,并在许可证下作为开源软件发布。官方客户端在和许多其他语言中都是可用的。根据的排名显示,是最受欢迎的企业搜索引擎,其次是,也是基于。 导语 全文搜索是很重要的功能,实现的方式也有很多种。以下通过 Laravel Scout 和 Elasticsearch 实现。先来看下各自的介绍 Laravel Scout 为...

    lmxdawn 评论0 收藏0
  • Laravel中利用Scout集成Elasticsearch搜索引擎

    摘要:写在前面以下简称是一个实时的分布式搜索和分析引擎。在搜索引擎方面,不仅仅有,像另一篇提到的,还有等等,这里不做评价和比较,本篇主要介绍中如何使用。首选必须安装有,请参考。本文基于,其他版本大同小异。 写在前面 Elasticsearch(以下简称es)是一个实时的分布式搜索和分析引擎。 在搜索引擎方面,不仅仅有Elasticsearch,像另一篇提到的Algolia,还有sphinx、...

    buildupchao 评论0 收藏0
  • Laravel中利用Scout集成Elasticsearch搜索引擎

    摘要:写在前面以下简称是一个实时的分布式搜索和分析引擎。在搜索引擎方面,不仅仅有,像另一篇提到的,还有等等,这里不做评价和比较,本篇主要介绍中如何使用。首选必须安装有,请参考。本文基于,其他版本大同小异。 写在前面 Elasticsearch(以下简称es)是一个实时的分布式搜索和分析引擎。 在搜索引擎方面,不仅仅有Elasticsearch,像另一篇提到的Algolia,还有sphinx、...

    xfee 评论0 收藏0
  • elastic学习笔记

    摘要:至于其他的算一般我习惯说树形模型,这里说的概率模型可能是差不多的意思。 要点 不同工具之间版本匹配很重要由点及面,先实践起来再学细节的原理和使用 技术栈 laravel5.5框架+scout组件+elasticsearch6.3.0搜索引擎 辅助 elasticsearch-head 查看集群数据可视化 中文分词插件Ik 介绍 laravel是一款现代化的php框架es是搜索引擎e...

    heartFollower 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<