ElasticLens – це пакет Laravel, який інтегрує Elasticsearch з моделями Eloquent. Він надає розширені можливості пошуку, зберігаючи знайомий синтаксис Laravel. Він працює в тандемі з пакетомlaravel-elasticsearch, дозволяючи розробникам виконувати повнотекстовий пошук, керувати міграцією індексів і легко налаштовувати відображення полів.
User::search('loves espressos');
ElasticLens представляє модельIndex-Model, яка дзеркально відображає вашу базову модель Eloquent. Ця модель автоматично синхронізується з вашою базою даних, гарантуючи відображення змін у вашому індексі Elasticsearch. Наприклад, модель матиме відповідну IndexedUser модель, що дозволяє виконувати ефективні пошукові операції:
User::viaIndex()->searchPhrase('loves dogs')->where('status', 'active')->get();
Цей підхід дозволяє виконувати складні запити, User використовуючи потужні пошукові функції Elasticsearch, зберігаючи при цьому простоту 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. В офіційній документації є великі приклади і докладні відомості про всі доступні функції.