ElasticLens — це пакет для Laravel, який інтегрує Elasticsearch з моделями Eloquent. Він надає розширені можливості пошуку, зберігаючи звичний синтаксис Laravel. Працює в парі з пакетом laravel-elasticsearch
, що дає можливість розробникам виконувати повнотекстовий пошук, управляти міграціями індексів і налаштовувати відображення полів.
User::search('loves espressos');
ElasticLens впроваджує Index-Model
, який віддзеркалює вашу базову модель Eloquent. Ця модель автоматично синхронізується з вашою базою даних, забезпечуючи відображення змін в індексі Elasticsearch. Наприклад, для моделі User
буде створена відповідна модель IndexedUser
, що дозволяє ефективно виконувати пошукові операції:
User::viaIndex()->searchPhrase('loves dogs')->where('status', 'active')->get();
Цей підхід дозволяє виконувати складні запити, використовучи потужні можливості пошуку Elasticsearch, зберігаючи простоту Eloquent. Ось кілька більш складних прикладів:
// Основний пошук з обмеженнями
User::viaIndex()->searchTerm('nara')->where('state', 'active')->limit(3)->get();
// Пошук за фразою
User::viaIndex()->searchPhrase('Ice bathing')->orderByDesc('created_at')->limit(5)->get();
// Підвищення ваги полів
User::viaIndex()->searchTerm('David', ['first_name^3', 'last_name^2', 'bio'])->get();
// Фільтрація за геолокацією
User::viaIndex()->where('status', 'active')->filterGeoPoint('home.location', '5km', [0, 0])->orderByGeo('home.location', [0, 0])->get();
Усі наведені приклади коду взято з документації проекту.
Після встановлення цього пакету просто додайте трейти Indexable
до моделі, яку хочете індексувати в Elasticsearch:
use PDPhilip\ElasticLens\Indexable;
class User extends Eloquent implements Authenticatable, CanResetPassword
{
use Indexable;
// ...
}
Далі створіть індексну модель за допомогою команди php artisan lens:make User
:
namespace App\Models\Indexes;
use PDPhilip\ElasticLens\IndexModel;
class IndexedUser extends IndexModel
{}
Ця команда генерує модель IndexedUser
в просторі імен App\Models\Indexes
, яка відповідає за індексування моделі User
в Elasticsearch.
Для детальної документації та розширеного використання відвідайте GitHub репозиторій ElasticLens. Офіційна документація містить численні приклади та деталі всіх доступних можливостей.