leapt/elastica-bundle
Symfony bundle that integrates Elasticsearch into your app through the Elastica client. It handles index configuration and mapping, automatic persistence of Doctrine entities, and repository-style search, giving you a convenient service layer for indexing and querying documents.
Architecture fit
ServiceProvider, no config/*.php, no facade, no Laravel container bindings. It relies on Symfony's DI extension (Leapt\ElasticaBundle\DependencyInjection\LeaptElasticaExtension), bundle registration in config/bundles.php, and YAML configuration under leapt_elastica.ruflin/elastica: client/index wiring, index create/populate/reset console commands, Doctrine persistence providers, finder/repository abstraction, pagination.Integration feasibility
Finder, repository, and provider classes will fatal any application subclass that overrides those methods without matching signatures. This is a real cost in the inherited scenario, where local subclasses are common.symfony/* or PHP 8.2+ runtime remains the first concrete blocker and must be spiked before any design work.ruflin/elastica is effectively superseded by the official elasticsearch/elasticsearch client, and Elastica's transport targets the ES 6/7 API surface. ES 8 removed multi-type and several transport assumptions Elastica relies on.Technical risk
Key questions
composer.lock? That determines whether v2.0.0 is even reachable, or whether we are stranded on 1.x.Stack fit
matchish/laravel-scout-elasticsearch) or the official elasticsearch/elasticsearch client behind a repository interface. v2.0.0 changes nothing here.elasticsearch/elasticsearch client plus a hand-rolled index/populate command, or a maintained bundle. FOSElasticaBundle is the benchmark before considering a fork.Migration path
Compatibility
ruflin/elastica version (unchanged by this release), Elasticsearch server version. The realistic ceiling is still PHP ≤7.4/8.0, Symfony ≤5.x, ES 6.x–7.x.composer.lock in a throwaway branch, once for 1.x and once for 2.0.0. Confirm which one resolves and whether either pulls in vulnerable transitive pins. Half a day, de-risks the whole evaluation.Sequencing
Maintenance
ruflin/elastica or its HTTP layer do not flow through, and pinning vulnerable versions is the default outcome.Support
Scaling
_source filtering semantics, ES 8 headers).Failure modes
composer update, blocking unrelated upgrades across the application.Ramp-up
How can I help you explore Laravel packages today?