elasticsearch 8.6.1+laravel scout

该文章详细介绍了如何在Laravel项目中使用Scout配合Elasticsearch进行全文搜索。首先,下载并配置Elasticsearch及ik分词插件,然后安装LaravelScout及Elasticsearch驱动,接着配置环境变量和应用服务提供者。文章还涉及了数据模型的设置以及如何导入数据库和执行复杂搜索操作。
摘要由CSDN通过智能技术生成

elasticsearch-8-6-1+laravel scout

下载 es:下载地址
下载ik分词下载地址
解压装到 \elasticsearch-8.6.1\plugins\ik
添加为windows服务:

elasticsearch-service.bat install

可视化工具:elasticHD

在laravel中安装:

composer require laravel/scout
composer require matchish/laravel-scout-elasticsearch
php artisan vendor:publish --provider=“Laravel\Scout\ScoutServiceProvider”

在 .env中添加:

SCOUT_DRIVER=Matchish\ScoutElasticSearch\Engines\ElasticSearchEngine
ELASTICSEARCH_HOST=http://localhost:9200

/config/app.php 修改添加:

'providers' => [
// Other Service Providers
	\Matchish\ScoutElasticSearch\ElasticSearchServiceProvider::class
],

/config/elastcsearch.php 设置:

return [
    'host' => env('ELASTICSEARCH_HOST'),
    'user' => env('ELASTICSEARCH_USER'),
    'password' => env('ELASTICSEARCH_PASSWORD'),
    'cloud_id' => env('ELASTICSEARCH_CLOUD_ID'),
    'api_key' => env('ELASTICSEARCH_API_KEY'),
    'queue' => [
        'timeout' => env('SCOUT_QUEUE_TIMEOUT'),
    ],
    'indices' => [
        'mappings' => [
            'default' => [
                'properties' => [
                    'id' => [
                        'type' => 'keyword',
                    ],
                ],
            ],
            'articles' => [
                "properties"=>  [
                    "name"=>  [
                        "type"=>  "text",
                        "analyzer"=>  "ik_max_word",
                        "search_analyzer"=>  "ik_smart"
                    ],
                    "description"=>  [
                        "type"=>  "text",
                        "analyzer"=>  "ik_max_word",
                        "search_analyzer"=>  "ik_smart"
                    ],
                    "content"=>  [
                        "type"=>  "text",
                        "analyzer"=>  "ik_max_word",
                        "search_analyzer"=>  "ik_smart"
                    ]
                ]
            ]
        ],
        'settings' => [
            'default' => [
                'number_of_shards' => 1,
                'number_of_replicas' => 0,
            ],
        ],
    ],
];

模型设置:

<?php

namespace App\Models;

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

class Articles extends Model
{
    use Searchable;
    public $timestamps = false;
    protected $fillable = ['name', 'description'];

    // 定义要搜索的属性
    public function toSearchableArray()
    {
        $array = $this->toArray();
        return $array;
    }
}

导入数据库:

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

进行复杂搜索:

$all= Articles::search('描述 9 描述 6', function ($client, Search $body) {
	   $higlight = new Highlight();
	   $higlight->addField('title');
	   $body->addHighlight($higlight);
	   return $client->search(['index' => 'articles', 'body' => $body->toArray()])->asArray();
})->raw();
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值