• Czas czytania ~2 min
  • 29.05.2025

ElasticLens to pakiet Laravel, który integruje Elasticsearch z modelami Eloquent. Zapewnia zaawansowane możliwości wyszukiwania przy zachowaniu znanej składni Laravela. Działa w parze z pakietemlaravel-elasticsearch, umożliwiając programistom wykonywanie wyszukiwań pełnotekstowych, zarządzanie migracjami indeksów i łatwe dostosowywanie mapowań pól.

User::search('loves espressos');

ElasticLens wprowadza na rynek soczewkęIndex-Model, która odzwierciedla Twój podstawowy model Eloquent. Ten model jest automatycznie synchronizowany z bazą danych, zapewniając, że zmiany są odzwierciedlane w indeksie Elasticsearch. Na przykład model miałby odpowiadający mu IndexedUser model, User umożliwiając wydajne operacje wyszukiwania:

User::viaIndex()->searchPhrase('loves dogs')->where('status', 'active')->get();

Takie podejście pozwala na wykonywanie złożonych zapytań przy użyciu zaawansowanych funkcji wyszukiwania Elasticsearch przy jednoczesnym zachowaniu prostoty Eloquent. Oto kilka bardziej zaawansowanych przykładów:

// 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();

Wszystkie powyższe fragmenty kodu pochodzą z przykładów readme projektu.

Konfiguracja

modelu Po zainstalowaniu tego pakietu działa on poprzez dodanie Indexable cechy do modelu, który chcesz indeksować w Elasticsearch:

use PDPhilip\ElasticLens\Indexable;

class User extends Eloquent implements Authenticatable, CanResetPassword
{
    use Indexable;
    // ...
}

Następnie możesz utworzyć model indeksu za pomocą php artisan lens:make User polecenia:

namespace App\Models\Indexes;

use PDPhilip\ElasticLens\IndexModel;

class IndexedUser extends IndexModel
{}

To polecenie generuje IndexedUser model w App\Models\Indexes przestrzeni nazw, który obsługuje indeksowanie Elasticsearch dla modeluUser.

Główne cechy

  • Konfiguracja zerowej konfiguracji: Szybko zintegruj Elasticsearch przy minimalnej konfiguracji.
  • Elokwentne zapytania: Używaj znanej składni Eloquent dla złożonych zapytań wyszukiwania.
  • Mapowanie pól niestandardowych: Definiowanie sposobu indeksowania pól i relacji.
  • Migracje indeksów: Zarządzanie wersjami indeksu Elasticsearch i migracjami.
  • Obserwatorzy modelu: Automatycznie synchronizuj zmiany z modeli Eloquent do Elasticsearch.
  • Narzędzia Artisan CLI: Polecenia do zarządzania kondycją indeksu, migracjami i nie tylko.

Dowiedz się więcej Aby

uzyskać szczegółową dokumentację i zaawansowane użycie, odwiedź repozytorium GitHub ElasticLens. Oficjalna dokumentacja zawiera obszerne przykłady i szczegółowe informacje na temat wszystkich dostępnych funkcji.

Comments

No comments yet
Yurij Finiv

Yurij Finiv

Full stack

O

Professional Fullstack Developer with extensive experience in website and desktop application development. Proficient in a wide range of tools and technologies, including Bootstrap, Tailwind, HTML5, CSS3, PUG, JavaScript, Alpine.js, jQuery, PHP, MODX, and Node.js. Skilled in website development using Symfony, MODX, and Laravel. Experience: Contributed to the development and translation of MODX3 i...

O autorze CrazyBoy49z
WORK EXPERIENCE
Kontakt
Ukraine, Lutsk
+380979856297

Codziennie zestrzeliwujemy „Shahedy”. Za każdym razem to uratowane życie. Potrzebujemy mobilności: busa lub przyczepy. Każda wpłata = kolejna noc pod ochroną.

🚐 Zbiórka na busa dla zespołu, pułk 1020 🎯 Cel: 500 000 ₴
🔗 Link do zbiórkiі 💳 4441 1111 2546 4663