Bổ sung cho các vấn đề elastic
Như đã demo ở https://dev.truyenvideo.com/p/su-dung-elasticsearch-de-xu-ly-viec-tim-kiem-trong-laravel-11 .Bài này mình có 1 số lưu ý về việc cài đặt elastic
Thứ 1 cần tắt ssl : do mình dùng ip vps nên cái ssl này không dùng được nó chỉ được dùng với domain .Cách tắt các bạn vào file config : chỉnh từ enabled sang false
# Enable encryption for HTTP API client connections, such as Kibana, Logstash, and Agents
xpack.security.http.ssl:
enabled: false
Còn trong model :
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
use JeroenG\Explorer\Application\Explored;
use Laravel\Scout\Searchable;
class Menu extends Model implements Explored
{
use HasFactory;
use Searchable;
/**
* The attributes that aren't mass assignable.
*
* @var array
*/
// protected $guarded = ['id', 'created_at', 'updated_at'];
/**
* The attributes that are mass assignable.
*
* @var array
*/
protected $fillable = ['name', 'link'];
public function searchableAs()
{
return 'demo_menu';
}
public function mappableAs(): array
{
return [
'id' => 'keyword',
'name' => 'text',
];
}
}
Mình nên xác định luôn phần bảng elastic cho model với searchableAs và các trường dữ liệu map , định dạng keyword là kiểu không trùng lặp
Trong mục controller nên xác định file mà cần tìm kiếm
$data = Menu::search('Thức')
->field('name')
->paginate(20);
Ở đây mình chỉ tìm từ thức trong trường name :
Mình dùng extention https://chromewebstore.google.com/detail/multi-elasticsearch-heads/cpmmilfkofbeimbmgiclohpodggeheim?pli=1 để kiểm tra elastic search
Các bạn có thể xem
Cấu hình thì trong file config \config\explorer.php:
'connection' => [
'host' => env('ELASTICSEARCH_HOST', 'localhost'),
'port' => '9200',
'scheme' => 'http',
'auth' => [
'username' => env('ELASTICSEARCH_USER'),
'password' => env('ELASTICSEARCH_PASS'),
],
'caFingerprint' => 'BBCF0ADF067C260DAFB2373431AA82F3E8ACC21EF5B930CCB51CD6D33CF1E7E5',
],
Trong file config\scout.php :
'driver' => env('SCOUT_DRIVER', 'algolia'),
Với .env : SCOUT_DRIVER=elastic