一、安装JDK
使用elasticsearch的前提是你的主机必须安装了java的JDK,而且版本必须是1.8以上。安装JDK,并设置环境变量。
下载地址:
https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html
二、下载elasticsearch安装包;
下载地址:
https://github.com/medcl/elasticsearch-rtf
三、解压安装包
进去安装包bin目录双击elasticsearch.bat
出现以下画面:表运行成功:在地址栏可以通过下图圈内地址访问,查看是否安装成功127.0.0.1:9200
出现如下图,表安装成功:
四、安装Scout
(1)首先,使用 composer 包管理器来安装 Scout,如果没有安装 composer 包管理器,要先安装;接着进入laravel项目的根目录使用composer 命令安装:
composer require laravel/scout
(2)接下来,你需要将 ScoutServiceProvider 添加到你的 config/app.php 配置文件的 providers 数组中:(Laravel5.7不需进行此操作);
DsdLaravel\Scout\ScoutServiceProvider::class
(3)注册好 Scout 的服务提供者之后,你可以使用 vendor:publish Artisan 命令生成 Scout 的配置文件。这个命令会在你的 config 目录下生成 scout.php 配置文件:
php artisan vendor:publish --provider="Laravel\Scout\ScoutServiceProvider"
(4)使用 composer安装scout的es驱动:
composer require tamayo/laravel-scout-elastic
如出现版本问题(可以选择下面这条命令)
composer require laravel/scout ^5.0.3
(5)安装完驱动之后,修改config\scout.php配合文件,将驱动修改为elasticsearch
'driver' => env('SCOUT_DRIVER', 'elasticsearch'),
并在下方添加驱动:
'elasticsearch' => [
//laravel57是项目名,可以自定义
'index' => env('ELASTICSEARCH_INDEX', 'laravel57'),
'hosts' => [
env('ELASTICSEARCH_HOST', 'http://127.0.0.1:9200'),
],
],
五、创建command命令
(1)使用php artisan创建command命令
php artisan make:command ESInit
(2)执行完命令后会创建app\Console\Command\ESInit.php文件,修改ESInit.php
//使用什么命令启动脚本
protected $signature = 'es:init';
//描述
protected $description = 'init laravel es for post';
(3)在app\Console\Kernel.php中挂载
protected $commands = [
\App\Console\Commands\ESInit::class
];
(4)完成之后使用php artisan命令查看命令是否挂载成功
六、配置
(1)修改app\Console\Command\ESInit.php
在上方引入
use GuzzleHttp\Client;
public function handle()
{
//创建template
$client=new Client();
$url=config('scout.elasticsearch.hosts')[0]. '/_template/tmp';
//$client->delete($url);
$param = [
'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'
]
]
]
]
]
]
]
],
],
];
$client->put($url,$param);
//记录
$this->info("=======创建模板成功=======");
//创建index
$url = config('scout.elasticsearch.hosts')[0] . '/' . config('scout.elasticsearch.index');
//$client->delete($url);
$param=[
'json' => [
'settings' => [
'refresh_interval'=> '5s',
'number_of_shards'=> 1,
'number_of_replicas'=> 0,
],
'mappings' => [
'_default_' => [
'_all' => [
'enabled'=> false
]
]
]
]
];
$client->put($url,$param);
//记录
$this->info(=======创建索引成功=======");
}
(2)在命令行中 使用 php artisan es:init 命令查看是否创建成功
(3)在我的项目中我使用文章数据表来搜索,因此需要修改模型文件,也就是post数据对于的数据模型加入如下代码
use Searchable;
//定义索引里面的type
public function searchableAs()
{
return "post";
}
//定义有哪些字段需要搜索
public function toSearchableArray()
{
return [
'title'=>$this->title,
'content'=>$this->content,
];
}
七、导入数据
使用php artisan命令导入数据(命名空间加模型名)
php artisan scout:import "\App\Post"
出现下面表示成功
之后在控制器模型中可以通过search()方法获取数据
例子:
App\Post::search(‘查询的数据’)->get();