资讯专栏INFORMATION COLUMN

Laravel 基于 Scout 配置实现 Elasticsearch (一)- 准备工作

jsyzchen / 3300人阅读

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

导语

全文搜索是很重要的功能,实现的方式也有很多种。以下通过 Laravel Scout 和 Elasticsearch 实现。先来看下各自的介绍

Laravel Scout 为 Eloquent 模型全文搜索实现提供了简单的、基于驱动的解决方案。通过使用模型观察者,Scout 会自动同步更新模型记录的索引。
Elasticsearch是一个基于Lucene库的搜索引擎。它提供了一个分布式、支持多租户的全文搜索引擎,具有HTTP Web接口和无模式JSON文档。Elasticsearch是用Java开发的,并在Apache许可证下作为开源软件发布。官方客户端在Java、.NET(C#)、PHP、Python、Apache Groovy、Ruby和许多其他语言中都是可用的。[5]根据DB-Engines的排名显示,Elasticsearch是最受欢迎的企业搜索引擎,其次是Apache Solr,也是基于Lucene。
新建测试数据

新建 fake_articles 用来测试

新建模型以及数据迁移 php artisan make:model Models/FakeArticle -m

在数据迁移中 database/migrations/2019_06_13_095420_create_fake_articles_table.php 编辑如下

public function up()
{
    Schema::create("fake_articles", function (Blueprint $table) {
        $table->increments("id");
        $table->string("author", 20)->comment("作者");
        $table->string("title", 200)->comment("标题");
        $table->text("content")->comment("内容");
        $table->timestamps();
    });
}

运行迁移 php artisan migrate

新建数据填充 php artisan make:seeder FakeArticlesSeeder

填充几条中文数据,以便后续测试

public function run()
{
    AppModelsFakeArticle::insert([
        [
            "author" => "王二",
            "title" => "黄金时代",
            "content" => "那一天我二十一岁,在我一生的黄金时代,我有好多奢望。我想爱,想吃,还想在一瞬间变成天上半明半暗的云,后来我才知道,生活就是个缓慢受锤的过程,人一天天老下去,奢望也一天天消逝,最后变得像挨了锤的牛一样。可是我过二十一岁生日时没有预见到这一点。我觉得自己会永远生猛下去,什么也锤不了我。",
            "created_at" => now(),
            "updated_at" => now(),
        ],
        ["author" => "陈辉",
            "title" => "绿毛水怪",
            "content" => "大团的蒲公英浮在街道的河流口,吞吐着柔软的针一样的光,我们好像在池塘的水底,从一个月亮走向另一个月亮。",
            "created_at" => now(),
            "updated_at" => now(),
        ],
        ["author" => "迅哥",
            "title" => "社戏",
            "content" => "两岸的豆麦和河底的水草所发散出来的清香,夹杂在水气中扑面的吹来;月色便朦胧在这水气里。淡黑的起伏的连山,仿佛是踊跃的铁的兽脊似的,都远远的向船尾跑去了,但我却还以为船慢。他们换了四回手,渐望见依稀的赵庄,而且似乎听到歌吹了,还有几点火,料想便是戏台,但或者也许是渔火。",
            "created_at" => now(),
            "updated_at" => now(),
        ]
    ]);
}

运行填充 php artisan db:seed --class=FakeArticlesSeeder

搭建 Elasticsearch 容器

laradock 中支持 Elasticsearch,直接搭建就可以,省去了诸多麻烦

切换到 laradock 目录

docker-compose build elasticsearch

docker-compose up -d elasticsearch

进入容器中 docker-compose exec elasticsearch bash

安装 ik 插件,注意要和 elasticsearch 版本相同,在 elasticsearch/Dockerfile 中可以查看版本 ./bin/elasticsearch-plugin install https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v6.6.0/elasticsearch-analysis-ik-6.6.0.zip

退出容器后重启 docker-compose restart elasticsearch


参考资料:Laravel Scout、ik

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/27893.html

相关文章

  • Laravel中利用Scout集成Elasticsearch搜索引擎

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

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

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

    heartFollower 评论0 收藏0

发表评论

0条评论

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