博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Laravel 基于 Scout 配置实现 Elasticsearch
阅读量:5032 次
发布时间:2019-06-12

本文共 3550 字,大约阅读时间需要 11 分钟。

一、安装scout
1、安装

composer require laravel/scout

2、接下来,你需要将 ScoutServiceProvider 添加到你的 config/app.php 配置文件的 providers 数组中:

Laravel\Scout\ScoutServiceProvider::class,

3、注册好 Scout 的服务提供者之后,你可以使用 vendor:publish Artisan 命令生成 Scout 的配置文件。这个命令会在你的 config 目录下生成 scout.php 配置文件:

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

注意:执行上述命令没反应时 直接执行 php artisan vendor:publish 然后输入数字选择

4、使用 composer安装scout的es驱动:

composer require tamayo/laravel-scout-elastic

5、安装完驱动之后,修改config\scout.php配合文件,将驱动修改为elasticsearch

'driver' => env('SCOUT_DRIVER', 'elasticsearch'),

6、并在下方添加驱动:

'elasticsearch' => [//laravel_es_test是项目名,可以自定义'index' => env('ELASTICSEARCH_INDEX', 'laravel_es_test'),'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];

 

三、配置

1、安装guzzlehttp/guzzle 扩展

composer require guzzlehttp/guzzle

2、修改app\Console\Command\ESInit.php

/*** Execute the console command.** @return mixed*/public function handle(){try{//创建template$client = new \GuzzleHttp\Client(); //这里的Clinet()是你vendor下的GuzzleHttp下的Client文件$this->createTemplate($client);$this->info('============create template success============');$this->createIndex($client);$this->info('============create index success============');}catch (\Exception $e){ownLogs('test.log', $e->getMessage());}}

/**

* 创建模板 see https://www.elastic.co/guide/en/elasticsearch/reference/current/dynamic-templates.html
* @param Client $client
*/
private function createTemplate($client)
{
$url = config('scout.elasticsearch.hosts')[0] . '/_template/template_1';
// $client->delete($url);
$client->put($url, [

 

'json' => [

'index_patterns' => [config('scout.elasticsearch.index').'*'],
'settings' => [
'number_of_shards' => 1,
],
'mappings' => [
'_source' => [
'enabled' => true
],
'properties' => [
'mapping' => [ // 字段的处理方式
'type' => 'keyword', // 字段类型限定为 string
'fields' => [
'raw' => [
'type' => 'keyword',
'ignore_above' => 256, // 字段是索引时忽略长度超过定义值的字段。
]
],
],
],

 

],

],
]);
}

 

/**

* 创建索引
* @param Client $client
*/
private function createIndex($client)
{
$url = config('scout.elasticsearch.hosts')[0] . '/' . config('scout.elasticsearch.index');
// $client->delete($url);
$client->put($url, [
'json' => [
'settings' => [
'refresh_interval' => '5s',
'number_of_shards' => 1, // 分片为
'number_of_replicas' => 0, // 副本数
],
],
]);
}

 

 

执行命令

php artisan es:init

 

 

 

注意:当前版本 ES7.3

6.0以下,6.*,7.*,很多语法差别
官方语法地址
https://www.elastic.co/guide/en/elasticsearch/reference/current/indices-templates.html

PUT _template/template_1{"index_patterns": ["te*", "bar*"],"settings": {"number_of_shards": 1},"mappings": {"_source": {"enabled": false},"properties": {"host_name": {"type": "keyword"},"created_at": {"type": "date","format": "EEE MMM dd HH:mm:ss Z yyyy"}}}}

四、编辑Model文件,导入数据,调用接口
1、编辑Model文件

$this->username,'phone' => $this->phone,];}}

 

2、导入数据

php artisan scout:import "App\Models\user"

 

 

 

注意:看起来是导入成功其实不一定,

vendor/tamayo/laravel-scout-elastic/src/ElasticsearchEngine.php文件中的update方法
$this->elastic->bulk($params);

这句代码会最终发送指令到es.但是这里没接收返回值,建议打印一下

 

 

一次成功,一次未成功

3、调用接口

$q = $request->input('q');$res = User::search($q)->get();return Response::success('成功', $res);

 

http://localtest/laravel_es_test/_doc/1
laravel_es_test:索引
_doc:类型
1:id

 

转载于:https://www.cnblogs.com/mmmzh/p/11599678.html

你可能感兴趣的文章
AJAX 状态值与状态码详解
查看>>
php面向对象编程(oop)基础知识示例解释
查看>>
树的子结构
查看>>
关于根据Build Platform或者OS 加载x86或者x64 dll的问题
查看>>
程序员高效开发的几个技巧
查看>>
js-权威指南学习笔记19.2
查看>>
hexo 搭建博客
查看>>
关于 UIWebView 几个高级用法
查看>>
maven创建的项目中无法创建src/main/java 解决方案
查看>>
集合1
查看>>
关键词 virtual
查看>>
建造者模式(屌丝专用)
查看>>
UVALive 4730 Kingdom +段树和支票托收
查看>>
[APIO2010]特别行动队
查看>>
SpringBoot 集成ehcache
查看>>
初步swift语言学习笔记2(可选类型?和隐式可选类型!)
查看>>
Nginx + Tomcat 反向代理 如何在高效的在一台服务器部署多个站点
查看>>
在Vs2012 中使用SQL Server 2012 Express LocalDB打开Sqlserver2012数据库
查看>>
Excel催化剂开源第42波-与金融大数据TuShare对接实现零门槛零代码获取数据
查看>>
【转】常用的latex宏包
查看>>