?下面由Laravel教程栏目带大家介绍在laravel中如何使用elaticsearch(步骤分明),希望对大家有所帮助!
|
下面由Laravel教程栏目带大家介绍在laravel中如何使用elaticsearch(步骤分明),希望对大家有所帮助!
安装相关扩展包
1.安装 guzzlehttp/guzzlecomposer require guzzlehttp/guzzle 在 app/Services 目录下编写 Http 服务类<?php
namespace App\Services;use GuzzleHttp\Client;use GuzzleHttp\Cookie\CookieJar;class HttpService{
protected $client;
public function __construct()
{
$this->client = new Client(['verify' => false, 'timeout' => 0,]);
}
/**
* 发送 get 请求
* @param $url
* @param array $aQueryParam
* @param string $isDecode
* [@return](https://learnku.com/users/31554) mixed
* @throws \GuzzleHttp\Exception\GuzzleException
*/
public function get($url, $aQueryParam = [], $isDecode = true)
{
$response = $this->client->request('GET',
$url,
[
'query' => $aQueryParam ]);
if($isDecode){
return \GuzzleHttp\json_decode($response->getbody()->getContents(), true);
}
return $response->getbody()->getContents();
}
/**
* 发送 post 请求
* @param $url
* @param array $aParam
* @param string $type
* @param string $isDecode
* [@return](https://learnku.com/users/31554) mixed
* @throws \GuzzleHttp\Exception\GuzzleException
*/
public function post($url, $aParam = [], $type = 'form_params', $isDecode = true)
{
$aOptions = [];
// Sending application/x-www-form-urlencoded POST
if ($type == 'form_params') {
$aOptions['form_params'] = $aParam;
}
// upload JSON data
if ($type == 'json') {
$aOptions['json'] = $aParam;
}
$response = $this->client->request('POST', $url, $aOptions);
if($isDecode){
return \GuzzleHttp\json_decode($response->getbody()->getContents(), true);
}
return $response->getbody()->getContents();
}
/**
* 发送 put 请求
* @param $url
* @param array $aParam
* @param string $type
* @param string $isDecode
* [@return](https://learnku.com/users/31554) mixed
* @throws \GuzzleHttp\Exception\GuzzleException
*/
public function put($url, $aParam = [], $type = 'form_params', $isDecode = true)
{
$aOptions = [];
// Sending application/x-www-form-urlencoded POST
if ($type == 'form_params') {
$aOptions['form_params'] = $aParam;
}
// upload JSON data
if ($type == 'json') {
$aOptions['json'] = $aParam;
}
$response = $this->client->request('PUT', $url, $aOptions);
if($isDecode){
return \GuzzleHttp\json_decode($response->getbody()->getContents(), true);
}
return $response->getbody()->getContents();
}
/**
* 保存远程文件到本地
* 跟随第三方服务器url重定向
* @param $url
* [@return](https://learnku.com/users/31554) bool|string
*/
public function getRemoteFile($url)
{
$jar = new CookieJar();
$aOptions = ['cookies' => $jar];
$response = $this->client->request('GET', $url, $aOptions);
return $response->getBody()->getContents();
}}2.安装 elasticsearch/elasticsearchcomposer require elasticsearch/elasticsearch 3.安装 laravel/scoutcomposer require laravel/scout php artisan vendor:publish --provider="Laravel\Scout\ScoutServiceProvider" 4.安装 scout 第三方驱动 babenkoivan/scout-elasticsearch-drivercomposer require babenkoivan/scout-elasticsearch-driver php artisan vendor:publish --provider="ScoutElastic\ScoutElasticServiceProvider" scout 服务配置,在 env 中增加配置项 // 驱动的host,若需账密:http://es_username:password@127.0.0.1:9200SCOUT_ELASTIC_HOST=elasticsearch:9200// 驱动SCOUT_DRIVER=elastic// 队列配置,数据量大时建议开启SCOUT_QUEUE=true 5.安装 predis/prediscomposer require predis/predis 初始化 elatic Template
创建 model 索引配置文件
创建 model 检索规则文件
设置 model Mapping 及检索字段class Article extends Model{
protected $indexConfigurator = ArticleIndexConfigurator::class;
use Searchable;
/**
* 检索规则
* @var string[]
*/
protected $searchRules = [
ArticleRule::class
];
// 设置模型字段的映射关系
protected $mapping = [
'properties' => [
'id' => [
'type' => 'integer',
],
'title' => [
'type' => 'text',
'analyzer' => 'ik_max_word',
'search_analyzer' => 'ik_max_word',
'index_options' => 'offsets',
'store' => true
],
'content' => [
'type' => 'text',
'analyzer' => 'ik_max_word',
'search_analyzer' => 'ik_max_word',
'index_options' => 'offsets',
'store' => true
],
'number' => [
'type' => 'integer',
],
],
];
/**
* 设置 es 检索返回的字段
* [@return](https://learnku.com/users/31554) array
*/
public function toSearchableArray() {
return [
'id' => $this->id,
'title' => $this->title,
'content' => $this->content,
];
}}使用步骤
使用检索 $query = Article::search('二胡')
->paginateRaw(3,'article',1);
dd($query->items()['hits']);其他使用请自行查看文档以上就是教你在laravel中如何使用elaticsearch(步骤分明)的详细内容,更多请关注模板之家(www.mb5.com.cn)其它相关文章! |
