cmsig/seal-opensearch-adapter
OpenSearch adapter for the cmsig/search SEAL project. Write and index documents in an OpenSearch server via the OpenSearch PHP client, usable directly or via DSN (TLS and basic auth supported). Still under active development.
cmsig/seal (central abstraction layer) and opensearchphp/opensearch (client). Changes in either could break compatibility.ClientBuilder).Searchable trait via SEAL.$this->app->singleton(Engine::class, fn() => new Engine(
new OpensearchAdapter(ClientBuilder::create()->setHosts([env('OPENSEARCH_HOST')])->build()),
$schema
));
whereNested(), aggregations()).Engine to route queries to both backends during transition.Scout::search()) with SEAL’s Engine::search().Searchable interface instead of Scout’s.opensearchphp/opensearch compatibility).cmsig/seal (likely v1.x). Verify no breaking changes in SEAL’s Engine interface.env() helpers out-of-the-box).composer require cmsig/seal-opensearch-adapter opensearchphp/opensearch
.env or config.UserSchema::class).Scout::index() with Engine::index() calls.Scout::search() with Engine::search() and adapt to SEAL’s DSL.cmsig/seal and opensearchphp/opensearch for breaking changes.composer.json to avoid surprises.OpensearchAdapter to log queries/errors via Laravel’s logging channel.$client->setLogger(new \Monolog\Logger('opensearch', [new \Monolog\Handler\StreamHandler('storage/logs/opensearch.log')]));
Illuminate\Cache\Repository) to fail gracefully during OpenSearch outages.| Failure Scenario | Impact | Mitigation |
|---|---|---|
| OpenSearch cluster down | Search queries fail | Implement retry logic with exponential backoff. Use a fallback cache (e.g., Redis). |
| Schema validation errors | Indexing/search failures | Validate schemas pre-deployment. Use SEAL’s schema validation tools. |
| Network partitions | Timeouts or stale data | Configure client timeouts and use OpenSearch’s snapshot/restore for backups. |
| SEAL breaking changes | Adapter incompatibility | Pin SEAL version. Test against SEAL’s release candidates. |
| High query latency | Poor user experience | Optimize queries (e.g., limit fields, use search_after for pagination). |
Post) to validate indexing/search.How can I help you explore Laravel packages today?