PHP code example of spatie / elasticsearch-query-builder
1. Go to this page and download the library: Download spatie/elasticsearch-query-builder library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
spatie / elasticsearch-query-builder example snippets
use Spatie\ElasticsearchQueryBuilder\Aggregations\MaxAggregation;
use Spatie\ElasticsearchQueryBuilder\Builder;
use Spatie\ElasticsearchQueryBuilder\Queries\MatchQuery;
$client = Elastic\Elasticsearch\ClientBuilder::create()->build();
$companies = (new Builder($client))
->index('companies')
->addQuery(MatchQuery::create('name', 'spatie', fuzziness: 3))
->addAggregation(MaxAggregation::create('score'))
->search();
use Spatie\ElasticsearchQueryBuilder\Queries\RangeQuery;
use Spatie\ElasticsearchQueryBuilder\Builder;
$client = Elastic\Elasticsearch\ClientBuilder::create()->build();
$builder = new Builder($client);
$builder->addQuery(RangeQuery::create('age')->gte(18));
$results = $builder->search(); // raw response from ElasticSearch
use Spatie\ElasticsearchQueryBuilder\Sorts\Sort;
use Spatie\ElasticsearchQueryBuilder\Builder;
// Initialize ExtendedBuilder with an Elasticsearch client
$builder = new Builder($client);
// Apply collapse to group by 'user_id'
$builder->collapse(
'user_id', // Field to collapse on
[
'name' => 'top_three_liked_posts',
'size' => 3, // Retrieve top 3 posts per user
'sort' => [
Sort::create('post.likes', Sort::DESC), // Sort posts by likes (descending)
],
'fields' => ['post.title', 'post.content', 'post.likes'], // Select specific fields
],
10, // Max concurrent group searches
);
// Execute the search
$response = $builder->search();
use Spatie\ElasticsearchQueryBuilder\Aggregations\TermsAggregation;
use Spatie\ElasticsearchQueryBuilder\Builder;
$results = (new Builder(Elastic\Elasticsearch\ClientBuilder::create()->build()))
->addAggregation(TermsAggregation::create('genres', 'genre'))
->search();
$genres = $results['aggregations']['genres']['buckets'];
use Spatie\ElasticsearchQueryBuilder\Sorts\NestedSort;
$builder
->addSort(
NestedSort::create('books', 'books.rating', NestedSort::ASC)
);
use Spatie\ElasticsearchQueryBuilder\Sorts\NestedSort;
use Spatie\ElasticsearchQueryBuilder\Queries\BoolQuery;
use Spatie\ElasticsearchQueryBuilder\Queries\TermQuery;
$builder
->addSort(
NestedSort::create(
'books',
'books.rating',
NestedSort::ASC
)->filter(BoolQuery::create()->add(TermQuery::create('books.category', 'comedy'))
);
use Spatie\ElasticsearchQueryBuilder\MultiBuilder;
use Spatie\ElasticsearchQueryBuilder\Builder;
$client = Elastic\Elasticsearch\ClientBuilder::create();
$multiBuilder = (new MultiBuilder($client));
$multiBuilder->addBuilder(
(new Builder($client))->index('custom_index')->size(10)
);
// you can pass the index name to the addBuilder method second param
$multiBuilder->addBuilder(
(new Builder($client))->size(10)
'different_index'
);
$multiResults = $multiBuilder->search();
Loading please wait ...
Before you can download the PHP files, the dependencies should be resolved. This can take some minutes. Please be patient.