markup/elasticsearch-bundle
A Symfony bundle that integrates Elasticsearch into PHP applications, offering configuration, service wiring, and tools for indexing and searching documents. Simplifies client setup and custom index management for Symfony projects.
elasticsearch/elasticsearch client, plus a dev-time profiler data collector. That is roughly a day of engineering to replicate. The decision it supports is "build thin, buy nothing" — you get the same capability with no third-party abstraction sitting on the critical path between your app and your data store.laravel/scout with an ES driver, or the official client behind a service provider. Surfacing the mismatch early is the highest-value thing this evaluation produces.Consider it when:
Bundle subclass, a DI Extension parsing YAML, tagged service definitions, a DataCollector wired into WebProfiler) has no equivalent in Laravel's container model, and none of that plumbing transfers.elasticsearch-php client wired into a Symfony container quickly, with dev-only query visibility, and you'd rather not hand-write the profiler collector.Look elsewhere when:
laravel/scout with an Elasticsearch driver, or the official client behind a small service provider (roughly fifty lines plus a config file). Framework primitives win on lifecycle, config, testing, and upgrade path.elasticsearch/elasticsearch 2.x/5.x. On modern Symfony (5/6/7) or modern elasticsearch-php (7/8), the dependency graph will usually refuse to resolve, and the two client generations are not API-compatible. That is often the deciding fact on its own.To executives: This is a small MIT-licensed Symfony integration layer for Elasticsearch with a built-in dev profiler for debugging queries. It is not a Laravel package, has no meaningful adoption (zero stars, zero dependents), and shows no signs of active maintenance. Recommendation: do not take a dependency on it. The capability we actually want — fast Elasticsearch connectivity plus query observability — is achievable with the official first-party client and about a day of integration work. That keeps us on supported ground, avoids inheriting an unmaintained abstraction, and means we don't spend engineering budget porting Symfony conventions into a Laravel codebase where they don't belong.
To engineering: The idea is worth borrowing; the package is not. Take the pattern — a data collector that surfaces ES queries, timings, and responses during development — and implement it over the official elasticsearch-php client, bound through a Laravel service provider, with observability coming from Telescope or an APM rather than a bundle. Concretely: extract the config schema from the bundle's DI Extension (hosts, auth, connection params, retry/backoff, serializer choice), reimplement as config/elasticsearch.php plus a singleton client binding, and replace the profiler value with a Telescope watcher that records query duration and index name only — no request or response bodies, which risks serializing PII into the profiler store. Gate any such collector strictly behind an explicit env flag plus app()->environment('local'), and assert config presence at boot so a typo can't silently fall back to localhost:9200. If we later operate a Symfony service, revisit this as a reference only: pin hard, read the source, and assume we may need to fork and own it.
Bottom line for the roadmap: treat this package as a design reference, not a dependency — the decision it supports is whether to own ~150 lines of first-party glue, and the answer for a Laravel product is yes.
How can I help you explore Laravel packages today?