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. Офіційна документація містить численні приклади та деталі всіх доступних можливостей.