munkie/elasticsearch-thrift-php
A PHP Elasticsearch client that talks to the cluster over the Thrift protocol instead of HTTP. It lets PHP applications index, search, and manage data through the Thrift-generated API, making it useful for legacy Elasticsearch setups that still expose Thrift endpoints.
elasticsearch/elasticsearch HTTP client (or a maintained OpenSearch client) rather than on bespoke protocol bindings.SearchClient / ThriftSearchGateway), never in controllers, models, jobs, or domain services. This keeps the eventual removal a swap rather than a rewrite.elasticsearch-transport-thrift, kept alive as a stopgap while migration is funded. Plus internal dependency audits and migration planning. It is not a basis for new features.Consider it only if all of the following hold:
Look elsewhere in essentially every other case:
Before any commitment, answer: which exact ES and plugin versions are in production; is the plugin still patched and permitted under security policy; which PHP and Apache Thrift runtime versions are required and do they work on the target Laravel runtime; can we avoid Thrift entirely via the official HTTP client; and who owns the wrapper, the upgrade path, and decommissioning.
To executives: This is not a strategic enabler. It is a generated legacy protocol binding for an Elasticsearch transport that was removed years ago, with negligible community traction (3 stars, 0 dependents) and no maintenance signal. We should not build product plans on it. If it exists in our stack, treat it as technical debt: the commercial opportunity is in migrating off it, not adopting it. Fund the migration; it is cheap now and expensive after it blocks a cluster upgrade, a security patch, or a hiring decision.
To engineering: Do not adopt this for new work. Standardize on the official Elasticsearch/OpenSearch HTTP clients, which are maintained, documented, and compatible with current cluster versions. Assume this package targets old ES 0.90/1.x-era Thrift — not ES 7/8. If we must keep it temporarily, wrap it behind a single internal SearchClient interface, register the Thrift client as a singleton in an isolated service provider, pin PHP and Thrift versions in a container, and centralize the status check — execute() returns a non-200 RestResponse rather than throwing, so every call site must inspect $res->status. Add contract tests, latency and error metrics, and circuit breaking, and run it in parallel against the HTTP path before cutover.
To product and architecture stakeholders: The only product-relevant decision this supports is prioritization: migrate away from Thrift-based Elasticsearch access before it constrains upgrades, security patching, managed-service options, or hiring. It unlocks no new features. Budget for high internal ownership, weak external support, and a high ramp-up for typical Laravel developers, and expect failure modes around protocol/version mismatch, missing Thrift runtime, serialization exceptions, and silent query differences versus HTTP JSON. Keep the integration surface small and the exit path documented from day one.
How can I help you explore Laravel packages today?