Cài đặt và Cấu hình Elasticsearch trong Laravel

Để cài đặt và cấu hình Elasticsearch trong Laravel, bạn cần thực hiện các bước sau:

Bước 1: Cài đặt Elasticsearch

Trước tiên, bạn cần cài đặt Elasticsearch trên máy chủ của mình hoặc sử dụng dịch vụ Elasticsearch cloud như Elastic Cloud. Hãy truy cập trang chủ Elasticsearch để tải phiên bản phù hợp và làm theo hướng dẫn cài đặt.

Bước 2: Cài đặt Elasticsearch Package cho Laravel

Tiếp theo, bạn cần cài đặt Elasticsearch package cho Laravel. Có nhiều package khác nhau hỗ trợ Elasticsearch trong Laravel, nhưng một trong những package phổ biến là "Laravel Scout". Để cài đặt Laravel Scout, mở terminal và chạy lệnh sau:

composer require laravel/scout

Bước 3: Cấu hình Elasticsearch trong Laravel

Sau khi cài đặt Laravel Scout, bạn cần cấu hình nó để sử dụng Elasticsearch làm trình tìm kiếm mặc định. Mở tệp .env của Laravel và thêm các thông số cấu hình sau:

SCOUT_DRIVER=elasticsearch
SCOUT_ELASTICSEARCH_HOSTS=http://localhost:9200

Trong đó, SCOUT_DRIVER định nghĩa trình tìm kiếm mà Laravel Scout sử dụng và SCOUT_ELASTICSEARCH_HOSTS chỉ định URL Elasticsearch mà Scout sẽ kết nối.

Bước 4: Chạy Migration

Tiếp theo, chạy migration để tạo bảng "searchable" cho các mô hình mà bạn muốn tìm kiếm trong Elasticsearch. Sử dụng lệnh sau:

php artisan migrate

Bước 5: Xác định Mô hình và Chỉ định Mô tả Tìm kiếm

Cuối cùng, trong mô hình mà bạn muốn tìm kiếm, hãy thêm Searchable trait và chỉ định mô tả tìm kiếm cho mỗi mô hình. Ví dụ:

use Laravel\Scout\Searchable;

class Product extends Model
{
    use Searchable;

    public function toSearchableArray()
    {
        return [
            'id' => $this->id,
            'name' => $this->name,
            'description' => $this->description,
            //Thêm các trường tìm kiếm khác nếu cần
        ];
    }
}

Bước 6: Đồng bộ dữ liệu với Elasticsearch

Sau khi cấu hình và định nghĩa các mô hình tìm kiếm, hãy chạy lệnh để đồng bộ dữ liệu từ cơ sở dữ liệu của bạn vào Elasticsearch:

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

Khi đã hoàn thành, Elasticsearch đã được tích hợp vào Laravel và bạn có thể bắt đầu sử dụng tính năng tìm kiếm của nó trong ứng dụng của mình.