To install and configure Elasticsearch in Laravel, follow these steps:
Step 1: Install Elasticsearch
Firstly, you need to install Elasticsearch on your server or use Elasticsearch cloud service like Elastic Cloud. Visit the Elasticsearch official website to download the appropriate version and follow the installation instructions.
Step 2: Install Elasticsearch Package for Laravel
Next, install the Elasticsearch package for Laravel. There are various packages that support Elasticsearch in Laravel, but one popular package is "Laravel Scout". To install Laravel Scout, open the terminal and run the following command:
composer require laravel/scout
Step 3: Configure Elasticsearch in Laravel
After installing Laravel Scout, you need to configure it to use Elasticsearch as the default search engine. Open the .env file of Laravel and add the following configuration parameters:
SCOUT_DRIVER=elasticsearch
SCOUT_ELASTICSEARCH_HOSTS=http://localhost:9200
Where SCOUT_DRIVER
defines the search engine that Laravel Scout uses and SCOUT_ELASTICSEARCH_HOSTS
specifies the Elasticsearch URL that Scout will connect to.
Step 4: Run Migration
Next, run the migration to create the "searchable" table for the models you want to search in Elasticsearch. Use the following command:
php artisan migrate
Step 5: Define Model and Assign Searchable Description
Finally, in the model you want to search, add the Searchable
trait and define the searchable description for each model. For example:
use Laravel\Scout\Searchable;
class Product extends Model
{
use Searchable;
public function toSearchableArray()
{
return [
'id' => $this->id,
'name' => $this->name,
'description' => $this->description,
// Add other searchable fields if needed
];
}
}
Step 6: Synchronize Data with Elasticsearch
After configuring and defining the searchable models, run the command to synchronize data from your database to Elasticsearch:
php artisan scout:import "App\Models\Product"
Once completed, Elasticsearch has been integrated into Laravel, and you can start using its search feature in your application.