fos-gregooz/elastica-bundle
Symfony bundle that integrates Elasticsearch via the Elastica client, letting you define indexes and mappings in configuration and keep them in sync with Doctrine entities through automatic listeners. Provides repository services so you can run search queries without touching the low-level client.
Verdict: this is a reference architecture, not an adoption candidate. The TPM framing matters here: the decision in front of us is not "install this package," it's "which artifact do we standardize on for search integration, and who owns it." This repository answers neither question favorably.
Architecture fit — fails on two independent axes
fos-gregooz/elastica-bundle is a Symfony bundle — a Bundle subclass with a DI extension, console commands (fos:elastica:populate), and Doctrine event subscribers. There is no Laravel service provider, facade, config publishing, or container wiring. Running it under Laravel means bootstrapping Symfony's DI compiler passes inside a Laravel kernel. That is technically possible and strategically indefensible — it creates a second framework's worth of machinery that no Laravel developer on the team can maintain.ruflin/elastica), itself a wrapper over the official elasticsearch/elasticsearch client. That's two layers between our code and the cluster. Elastica trails official client support for newer Elasticsearch majors — notably ES 8's TLS/auth defaults and the removal of mapping types in ES 7. Our cluster upgrade cadence becomes gated by a dependency's release cadence, not by our roadmap.Integration feasibility
friendsofsymfony/elastica-bundle. This fork derives from it. Nothing in the description suggests a capability gap the fork fills.Technical risk — high, concentrated in provenance
Key questions to close before any decision
friendsofsymfony/elastica-bundle at the nearest matching tag, and is any of it published upstream as a PR?Stack fit
elasticsearch/elasticsearch with queued jobs, or adopt Scout if the team wants model-driven sync at the cost of query control. Do not attempt to emulate bundle semantics — the DI-configured mappings, populate commands, and Doctrine subscribers have no Laravel analogue worth recreating.friendsofsymfony/elastica-bundle, pinned to a release tag. Only if the fork carries a required unpublished patch should it enter consideration — and then vendor the patch into a repository we control, not pull from a third-party namespace.Migration path
Compatibility
composer.json.Sequencing
index_v2, populate, verify counts and sample queries, then flip the read alias atomically.Maintenance
Support
Scaling
Failure modes
composer install breaks on clean machines. Mirror or vendor the source.Ramp-up
Recommendation: reject fos-gregooz/elastica-bundle as a dependency. On Symfony, standardize on upstream friendsofsymfony/elastica-bundle at a pinned tag. On Laravel, use the official Elasticsearch client behind a queued, owned indexer. In both cases, treat this bundle as the requirements document for our search integration — declarative mappings, population tooling, incremental sync — and not as the implementation.
How can I help you explore Laravel packages today?