kinch / laravel-scout-elasticsearch
Elastic Driver for Laravel Scout
v2.1.0
2023-07-18 14:54 UTC
Requires
- php: ^7.2|^8.0
- elasticsearch/elasticsearch: ^8.0
- laravel/scout: ^9.0|^10.0
Requires (Dev)
- phpunit/phpunit: ^9.0|^10.0
This package is auto-updated.
Last update: 2024-12-18 17:48:40 UTC
README
Elasticsearch Driver for Laravel Scout
Installation
You can install the package via composer:
composer require kinch/laravel-scout-elasticsearch:"^2.0"
Setting up Elasticsearch configuration
vendor:publish
php artisan vendor:publish --provider="Kinch\LaravelScoutElasticsearch\LaravelScoutElasticsearchServiceProvider"
After you've published the Laravel Scout package configuration, you need to set your driver to elasticsearch and add its configuration:
// config/elasticsearch.php
<?php
return [
'host' => env('ELASTICSEARCH_HOST'),
'user' => env('ELASTICSEARCH_USER'),
'password' => env('ELASTICSEARCH_PASSWORD'),
'cert' => storage_path(env('ELASTICSEARCH_CERT')),
'cloud_id' => env('ELASTICSEARCH_CLOUD_ID'),
'api_key' => env('ELASTICSEARCH_API_KEY'),
'queue' => [
'timeout' => env('SCOUT_QUEUE_TIMEOUT'),
],
// index_ is followed by the index name
'index_article' => [
'settings' => [
'number_of_shards' => 5,
'number_of_replicas' => 1,
],
'mappings' => [
"properties" => [
"title" => [
"type" => "text",
"analyzer" => "ik_max_word",
"search_analyzer" => "ik_smart",
"fields" => ["keyword" => ["type" => "keyword", "ignore_above" => 256]],
],
],
],
],
];
Usage
Set env variables
SCOUT_DRIVER=Kinch\LaravelScoutElasticsearch\Engines\ElasticsearchEngine
ELASTICSEARCH_HOST=host:port
ELASTICSEARCH_USER=elastic
ELASTICSEARCH_PASSWORD=
ELASTICSEARCH_CERT=certs/http_ca.crt
Set ELASTICSEARCH_HOST env variable
ELASTICSEARCH_HOST=host:port,host:port
console
// create index
php artisan scout:index article
// delete index
php artisan scout:delete-index article
// batch update data to es
php artisan scout:import "App\Models\Article"
search example
use App\Models\Article;
// $condition = "test";
// ... or
// $condition = [
// "title" => "test",
// "abstract" => "test"
// ];
// ... or
$keyword = "test";
$source = [1,2];
$startTime = '2023-05-01T00:00:00.000+0800';
$endTime = '2023-05-20T00:00:00.000+0800';
$condition = [
"_customize_body" => 1,
"bool" => [
"should" => [
[
"match" => [
"title" => ["query" => $keyword, 'boost' => 5]
]
],
[
"match" => [
"abstract" => ["query" => $keyword, 'boost' => 3]
]
],
],
"must" => [
[
"terms" => ["source" => $source]
],
[
"range" => [
"created_at" => [
'gte' => $startTime,
'lte' => $endTime
]
]
]
]
],
];
$data = Article::search($condition)
->orderBy('_score', 'desc')
->paginate(10);
More please see Laravel Scout official documentation.
License
The MIT License (MIT).