Пакет elasticsearch-builder для PHP пропонує лаконічний, fluent, immutable і type-safe конструктор запитів для Elasticsearch. Пакет безшовно працює з офіційним Elasticsearch PHP client і забезпечує зручний API замість ручного складання запитів:
use Elastic\Elasticsearch\ClientBuilder;
use Bonu\ElasticsearchBuilder\QueryBuilder;
use Bonu\ElasticsearchBuilder\Query\TermQuery;
use Bonu\ElasticsearchBuilder\Query\BoolQuery;
use Bonu\ElasticsearchBuilder\Query\MatchQuery;
$builder = new QueryBuilder('products')
->query(new TermQuery('ean', 'foo_bar_123')->boost(12))
->query(new BoolQuery()
->should(new MatchQuery('name', 'foo'))
->should(new MatchQuery('description', 'bar'))
->boost(5)
)
->size(20);
$client = ClientBuilder::create()->build();
$products = $client->search($builder->build());
Розробникам часто зручніше користуватися fluent-інтерфейсом, ніж складними масивами або сирим JSON при прямому використанні клієнта:
// Using the client with JSON strings
$json = '{
"query" : {
"match" : {
"testField" : "abc"
}
}
}';
$params = [
'index' => 'my_index',
'body' => $json
];
$results = $client->search($params);
Раджу ознайомитися з Elasticsearch та PHP client docs перед використанням цього пакета. Elasticsearch — потужна платформа для просунутих пошукових можливостей, observability та інших задач.
Основні можливості
- Повністю fluent і chainable API
- Немає додаткових залежностей, окрім офіційного Elasticsearch PHP SDK
- Просте створення повторно використовуваних складених запитів
- 100% type-hinted і дружній до IDE
- PHP 8.4+
Почати роботу з пакетом можна на GitHub: php-elasticsearch-builder.