ElasticLens: потужний Eloquent для Elasticsearch у Laravel

Перекладено ШІ 0 Laravel News 30 травня, 2025

Досліджуйте можливості інтеграції Elasticsearch з Eloquent через пакет ElasticLens у Laravel! Ця стаття розкриє всі переваги цього потужного інструменту та навчить вас, як легко виконувати складні запити, використовуючи знайомий синтаксис Eloquent

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.

# Основні можливості

  • Нульова конфігурація: Швидка інтеграція Elasticsearch з мінімальними налаштуваннями.
  • Запити у стилі Eloquent: Використання знайомого синтаксису Eloquent для складних пошукових запитів.
  • Кастомне відображення полів: Визначення, як поля та зв'язки індексуються.
  • Міграції індексів: Управління версіями індексів Elasticsearch та їх міграціями.
  • Спостерігачі моделей: Автоматична синхронізація змін з ваших моделей Eloquent до Elasticsearch.
  • CLI інструменти Artisan: Команди для управління станом індексів, міграціями та іншим.

# Додаткова інформація

Для детальної документації та розширеного використання відвідайте GitHub репозиторій ElasticLens. Офіційна документація містить численні приклади та деталі всіх доступних можливостей.

Популярні

Інше, що варто прочитати

53 Оновлено 02 червня, 2026

Усе, що нам відомо про Livewire 4

Нова версія Livewire 4, представленої Келебом Порзіо на Laracon US 2025, обіцяє значні покращення у швидкості та організації компонентів. Які з інноваційних функцій підкорять ваше серце? Читайте далі, щоб дізнатися більше про те, як Livewire 4 полегшить вашу роботу

26 Оновлено 02 червня, 2026

"SQLSTATE[HY000] [2002] Connection refused" у Laravel в GitHub Actions

Чи стикалися ви з помилкою «SQLSTATE[HY000] [2002] Connection refused» під час налаштування GitHub Actions для вашого додатку на Laravel? У нашій статті ми розглянемо три поширені причини цієї помилки та надамо рішення для їх усунення. Читайте далі, щоб дізнатися, як ваш CI/CD потік може працювати бездоганно!

74 Оновлено 02 червня, 2026

Laravel Boost — ваш стартовий набір для програмування з використанням штучного інтелекту

Вперше у світі Laravel з'являється можливість, яка значно спростить ваше повсякденне програмування завдяки новому пакету Laravel Boost. Читайте статтю, щоб дізнатися, як посилена інтеграція штучного інтелекту може підвищити ефективність вашої роботи та оптимізувати створення проектів у Laravel