ElasticLens — это пакет Laravel, который интегрирует Elasticsearch с моделями Eloquent. Он предоставляет расширенные возможности поиска, сохраняя при этом знакомый синтаксис Laravel. Он работает в тандеме с пакетом laravel-elasticsearch , позволяя разработчикам выполнять полнотекстовый поиск, управлять миграцией индексов и легко настраивать сопоставления полей.
User::search('loves espressos');
ElasticLens представляет модель, Index-Model которая отражает вашу базовую модель Eloquent. Эта модель автоматически синхронизируется с базой данных, что обеспечивает отражение изменений в индексе Elasticsearch. Например, User модель должна иметь соответствующую IndexedUser модель, обеспечивающую эффективные операции поиска:Этот подход позволяет выполнять сложные запросы с использованием мощных функций поиска Elasticsearch,
User::viaIndex()->searchPhrase('loves dogs')->where('status', 'active')->get();
сохраняя при этом простоту Eloquent. Вот несколько более продвинутых примеров:
// Basic search term with limits
User::viaIndex()->searchTerm('nara')
->where('state','active')
->limit(3)->get();
// Phrase search
User::viaIndex()->searchPhrase('Ice bathing')
->orderByDesc('created_at')
->limit(5)->get();
// Boosting term fields
User::viaIndex()->searchTerm('David',['first_name^3', 'last_name^2', 'bio'])->get();
// Geolocation filtering
User::viaIndex()->where('status', 'active')
->filterGeoPoint('home.location', '5km', [0, 0])
->orderByGeo('home.location',[0, 0])
->get();
Все приведенные выше фрагменты кода взяты из примеров readme проекта.
Настройка
модели После установки этого пакета он работает путем добавления 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 пространстве имен, которое обрабатывает индексацию Elasticsearch для User модели.
Основные особенности
- Настройка без настройки: Быстрая интеграция Elasticsearch с минимальными настройками.
- Красноречивые запросы: Используйте знакомый синтаксис Eloquent для сложных поисковых запросов.
- Сопоставление пользовательских полей: Определите способ индексации полей и отношений.
- Миграция индексов: Управляйте версиями индекса Elasticsearch и миграцией.
- Модели-наблюдатели: Автоматическая синхронизация изменений из моделей Eloquent с Elasticsearch.
- Инструменты Artisan CLI: Команды для управления работоспособностью индекса, миграций и т. д.
Подробнее
Подробную документацию и расширенное использование можно найти в репозитории ElasticLens на GitHub. Официальная документация содержит обширные примеры и подробную информацию обо всех доступных функциях.