ElasticSearch在Larave中的使用

ElasticSearch在Larave中的使用

此笔记实在已经安装ElasticSearch服务在Laravel使用

安装Laravel,我这边安装的larave5.5(这个根据个人情况)

composer create-project --prefer-dist laravel/laravel esLaravel 5.5.*

测试Laravel运行Laravel

 php artisan serve --port 8022

在这里插入图片描述

安装 laravel/scout

composer require laravel/scout

Scout 安装完成之后,你应该使用 vendor:publish Artisan 命令来生成 Scout 配置文件。这个命令将生成 scout.php 配置文件到你的 config 目录:

php artisan vendor:publish --provider="Laravel\Scout\ScoutServiceProvider"

安装composer require tamayo/laravel-scout-elastic

composer require tamayo/laravel-scout-elastic

安装驱动必要条件Algolia

composer require algolia/algoliasearch-client-php

6.修改 scout.php 配置(/config/ scout.php)

修改
'driver' => env('SCOUT_DRIVER', 'elasticsearch'),
 //增加一个驱动
    'elasticsearch' => [
            'index' => env('ELASTICSEARCH_INDEX', 'laravel56_shop'),
            'hosts' => [
                env('ELASTICSEARCH_HOST', '127.0.0.1:9200'),
            ],
     ],

7.创建 mylaravel 的索引和模板,并把索引和模板进行关联

    1.创建Command
	      php artisan make:command ESInit;#会生成一个 Console/Commands 文件夹和 ESInit.php 的文件
	2.编辑handle
<?php

namespace App\Console\Commands;

use Illuminate\Console\Command;

class ESInit extends Command
{
    /**
     * 控制台命令的名称和签名。
     *
     * @var string
     */
    protected $signature = 'es:init';

    /**
     * 控制台命令的描述
     *
     * @var string
     */
    protected $description = 'init laravel elasticsearch for shopTitle';

    /**
     * Create a new command instance.
     *
     * @return void
     */
    public function __construct()
    {
        parent::__construct();
    }

    /**
     * Execute the console command.
     * 向ES中发送reset风格的请求
     * @return mixed
     */
    public function handle()
    {
        //创建template
        $client = new Client();
        $url = config('scout.elasticsearch.hosts')[0] . '/_template/tmp';
        $params = [
            'json' => [
                'template' => config('scout.elasticsearch.index'),
                'mappings' => [
                    '_default_' => [
                        'dynamic_templates' => [
                            [
                                'strings' => [
                                    'match_mapping_type' => 'string',
                                    'mapping' => [
                                        'type' => 'text',
                                        'analyzer' => 'ik_smart',
                                        'fields' => [
                                            'keyword' => [
                                                'type' => 'keyword'
                                            ],
                                        ],
                                    ],
                                ],
                            ]
                        ],
                    ],
                ],
            ],
        ];
        //想URL发送参数创建template
        $client->put($url, $params);
     
        //创建index
        $url = config('scout.elasticsearch.hosts')[0] . '/' . config('scout.elasticsearch.index');
        $params = [
            'json' => [
                'settings' => [
                    'refresh_interval' => '5s',
                    'number_of_shards' => 1,
                    'number_of_replicas' => 0,
                ],
                'mappings' => [
                    '_default_' => [
                        '_all' => [
                            'enabled' => false
                        ],
                    ],
                ],
            ],
        ];
        $client->put($url, $params);
    }
}

8.挂载进入编辑 App\Console\Kernel.php

 /**
     * The Artisan commands provided by your application.
     *
     * @var array
     */
    protected $commands = [
        //
         Commands\ESInit::class
    ];

使用命令 php artisan 检查该命令是否生效

导入数据库中已有的数据到 ElasticSearch

创建模型 php artisan make:model Models/Product

product.php 中

<?php

namespace App\Models;

use Illuminate\Database\Eloquent\Model;
use Laravel\Scout\Searchable;

class Product extends Model
{
    use Searchable;
    /**
     * 定义索引里的type值,重写
     * @return string
     */
    public function searcheableAs()
    {
        return "product";
    }

    /**
     * 定义那些字段需要搜索
     * @return array
     */
    public function searchableArray()
    {
        return [
            'title' => $this->title,
            'descr' => $this->introduce
        ];
    }
}

导入 product 数据
使用命令 php artisan scout:import “App\Models\Product”#就可以将数据库中的数据导入
在es终端可以看到
在这里插入图片描述
在浏览器验证
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值