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. Офіційна документація містить численні приклади та деталі всіх доступних можливостей.
Нова версія Livewire 4, представленої Келебом Порзіо на Laracon US 2025, обіцяє значні покращення у швидкості та організації компонентів. Які з інноваційних функцій підкорять ваше серце? Читайте далі, щоб дізнатися більше про те, як Livewire 4 полегшить вашу роботу
Чи стикалися ви з помилкою «SQLSTATE[HY000] [2002] Connection refused» під час налаштування GitHub Actions для вашого додатку на Laravel? У нашій статті ми розглянемо три поширені причини цієї помилки та надамо рішення для їх усунення. Читайте далі, щоб дізнатися, як ваш CI/CD потік може працювати бездоганно!
Вперше у світі Laravel з'являється можливість, яка значно спростить ваше повсякденне програмування завдяки новому пакету Laravel Boost. Читайте статтю, щоб дізнатися, як посилена інтеграція штучного інтелекту може підвищити ефективність вашої роботи та оптимізувати створення проектів у Laravel