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.