spatie/elasticsearch-search-string-parser
Parse custom search strings into Elasticsearch queries. Supports regex-based directives like status:active or @user, grouping directives, and autocomplete suggestions. Build searches via spatie/elasticsearch-query-builder and get results + directive suggestions.
status:active) and Elasticsearch’s structured queries.spatie/elasticsearch-query-builder, enabling tailored search syntax (e.g., @mentions, group_by:). This is critical for domain-specific use cases (e.g., e-commerce filters, ticketing systems).status field must exist for status:active to work).spatie/elasticsearch-query-builder for complex queries, reducing custom DSL development.status:) must map to Elasticsearch fields. Misalignment risks runtime errors or silent failures.priority:high AND @team:dev).elasticsearch-query-builder suffices or if raw DSL is needed.config/app.php and service providers./api/search?q=foo).status:active) and validate query output against raw Elasticsearch DSL.category:electronics → category:electronics).elasticsearch-query-builder for complex queries.status: values).spatie/elasticsearch-query-builder (required for directives).elasticsearch/elasticsearch (PHP client, v8+ recommended).composer require spatie/elasticsearch-search-string-parser.php artisan vendor:publish --provider="Spatie\SearchStringParser\SearchStringParserServiceProvider".config/search-string-parser.php.SearchController@execute).use Spatie\SearchStringParser\SearchStringParser;
public function execute(Request $request) {
$query = $request->input('q');
$parser = app(SearchStringParser::class);
$elasticsearchQuery = $parser->parse($query);
return Elasticsearch::search($elasticsearchQuery);
}
status:active → correct Elasticsearch query).config/search-string-parser.php) for directives.spatie/elasticsearch-query-builder and Elasticsearch PHP client for updates.status: not working? Check Elasticsearch field mapping").Log::debug('Parsed query:', $elasticsearchQuery))._validate/query API to validate queries before execution.cache()->remember('search:foo', 5, fn() => $parser->parse('foo'))).scout:cache).throttle:60,1 in Laravel middleware).| Failure Scenario | Impact | Mitigation |
|---|---|---|
| Elasticsearch cluster down | No search results | Fallback to database search (degraded mode). |
| Invalid directive syntax | 500 errors | Graceful fallback (e.g., return empty results). |
| Regex parsing timeout | Slow responses | Increase PHP max_execution_time. |
| Elasticsearch version mismatch | Query failures | Pin package version and test upgrades. |
| High query volume | Cluster overload | Implement query throttling and caching. |
priority:high).status:, @mentions)./admin/search).How can I help you explore Laravel packages today?