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

栏目: PHP · 发布时间: 6年前

内容简介:全文搜索是很重要的功能,实现的方式也有很多种。以下通过 Laravel Scout 和 Elasticsearch 实现。先来看下各自的介绍Laravel Scout 为 Eloquent 模型全文搜索实现提供了简单的、基于驱动的解决方案。通过使用模型观察者,Scout 会自动同步更新模型记录的索引。Elasticsearch是一个基于Lucene库的搜索引擎。它提供了一个分布式、支持多租户的全文搜索引擎,具有HTTP Web接口和无模式JSON文档。Elasticsearch是用Java开发的,并在Apa

导语

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

Laravel Scout 为 Eloquent 模型全文搜索实现提供了简单的、基于驱动的解决方案。通过使用模型观察者,Scout 会自动同步更新模型记录的索引。

Elasticsearch是一个基于Lucene库的搜索引擎。它提供了一个分布式、支持多租户的全文搜索引擎,具有HTTP Web接口和无模式JSON文档。Elasticsearch是用 Java 开发的,并在Apache许可证下作为开源软件发布。官方客户端在Java、.NET(C#)、 PHPPython 、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()
{
    \App\Models\FakeArticle::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(),
        ]
    ]);
}
  1. 运行填充 php artisan db:seed --class=FakeArticlesSeeder

搭建 Elasticsearch 容器

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

  1. 切换到 laradock 目录
  2. docker-compose build elasticsearch
  3. docker-compose up -d elasticsearch
  4. 进入容器中 docker-compose exec elasticsearch bash
  5. 安装 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

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

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

参考资料: Laravel Scoutik


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Design for Hackers

Design for Hackers

David Kadavy / Wiley / 2011-10-18 / USD 39.99

Discover the techniques behind beautiful design?by deconstructing designs to understand them The term ?hacker? has been redefined to consist of anyone who has an insatiable curiosity as to how thin......一起来看看 《Design for Hackers》 这本书的介绍吧!

XML 在线格式化
XML 在线格式化

在线 XML 格式化压缩工具

HEX HSV 转换工具
HEX HSV 转换工具

HEX HSV 互换工具