laravel 中使用 elasticsearch

安装 elasticsearch 和 kibana(用来查看管理elasticsearch中的数据)

参照:https://blog..net/z_ruitao/article/details/105043521

安装 scout

composer require laravel/scout
# 在config/app.php 的 providers 数组中添加
LaravelScoutScoutServiceProvider::class
# 执行命令发布配置文件
php artisan vendor:publish --provider="LaravelScoutScoutServiceProvider
注:如果按照 scout 失败,根据错误信息判断是因为版本过高不兼容,可通过安装低版本来解决

安装 laravel-scout-elastic

composer require tamayo/laravel-scout-elastic
# 在 config/app.php 的 providers 数组中添加
ScoutEnginesElasticsearchElasticsearchProvider::class

修改配置文件 scout.php

driver => env(SCOUT_DRIVER, elasticsearch),
//配置elasticsearch引擎
elasticsearch => [
    index => env(ELASTICSEARCH_INDEX, es_index),//es_index就是索引的名字,根据实际情况来取名
    hosts => [
        env(ELASTICSEARCH_HOST, http://127.0.0.1:9200),
    
    ],
]

在 model 中使用

在 model 类中引用 Searchable

use LaravelScoutSearchable; # 命名空间
use Searchable;

重写 searchableAs () 方法 toSearchableArray () 方法

/**
     * 获取模型的可搜索数据
     * @return array
     */
    public function toSearchableArray()
    {
        $data = [
            id => $this->id,
            name => $this->name
        ];

        return $data;
    }
    // 搜索的type
    public function searchableAs()
    {
        return "_doc";
    }

导入已存在表中的数据

php artisan scout:import "AppModelCate"

调用

$article = Cate::search($this->argument(query))->get();

之后通过模型创建的数据都会自动同步到 elasticsearch

参考:

  1. https://learnku.com/articles/40289
  2. https://learnku.com/articles/25179
经验分享 程序员 微信小程序 职场和发展