PHP code example of savingfor / elasticsearch-query-builder
1. Go to this page and download the library: Download savingfor/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/ */
savingfor / elasticsearch-query-builder example snippets
use Elasticsearch\ClientBuilder;
use Savingfor\ElasticsearchQueryBuilder\Aggregations\TermsAggregation;
// 您的es连接配置
$host[] = [
"host" => "127.0.0.1",
"port" => "9200",
"user" => "elastic",
"pass" => "elastic"
];
// 创建连接客户端
$client = ClientBuilder::create()
->setHosts($host)
->setConnectionPool('\Elasticsearch\ConnectionPool\SimpleConnectionPool', [])
->setRetries(10)->build();
$builder = new Builder($client);
// 生成查询quuery
$builder->index("test")
->addQuery(
TermQuery::create("day", "2022-02-22")
);
// 通过调用$builder->search()来执行查询
$result = $builder->search();
\Savingfor\ElasticsearchQueryBuilder\Queries\TermQuery::create('age', '18');
\Savingfor\ElasticsearchQueryBuilder\Queries\RangeQuery::create('age')
->gte(18)
->lte(28);
\Savingfor\ElasticsearchQueryBuilder\Queries\BoolQuery::create()
->add($matchQuery, 'must_not')
->add($existsQuery, 'must_not');
\Savingfor\ElasticsearchQueryBuilder\Queries\ExistsQuery::create('conditions');
\Savingfor\ElasticsearchQueryBuilder\Queries\MatchQuery::create('name', 'john saving', fuzziness: 2);
\Savingfor\ElasticsearchQueryBuilder\Queries\MultiMatchQuery::create('john', ['email', 'email'], fuzziness: 'auto');
\Savingfor\ElasticsearchQueryBuilder\Queries\NestedQuery::create(
'user',
new \Savingfor\ElasticsearchQueryBuilder\Queries\MatchQuery('name', 'john')
);
\Savingfor\ElasticsearchQueryBuilder\Queries\WildcardQuery::create('user.id', '*doe');
$builder->index("test")
->addQuery(
TermQuery::create("name", "john"),
"must_not" // 可用类型: must, must_not, should, filter
)
->addQuery(
RangeQuery::create("money")->gte("20")
);
use Savingfor\ElasticsearchQueryBuilder\Aggregations\TermsAggregation;
use Savingfor\ElasticsearchQueryBuilder\Builder;
$client = ClientBuilder::create()
->setHosts($host)
->setConnectionPool('\Elasticsearch\ConnectionPool\SimpleConnectionPool', [])
->setRetries(10)->build();
$builder = new Builder($client);
$results = $builder
->addAggregation(TermsAggregation::create('my_agg', 'age'))
->search();
$genres = $results['aggregations']['my_agg']['buckets'];
\Savingfor\ElasticsearchQueryBuilder\Aggregations\TermsAggregation::create(
'genres',
'genre'
)
->size(10)
->order(['_count' => 'asc']) // _count按文档数排序;_term按词项的字符串值的字母顺序排序
->missing('N/A')
->aggregation(/* $subAggregation */);
\Savingfor\ElasticsearchQueryBuilder\Aggregations\CardinalityAggregation::create('team_agg', 'team_name');
\Savingfor\ElasticsearchQueryBuilder\Aggregations\FilterAggregation::create(
'tshirts',
\Savingfor\ElasticsearchQueryBuilder\Queries\TermQuery::create('type', 'tshirt'),
\Savingfor\ElasticsearchQueryBuilder\Aggregations\MaxAggregation::create('max_price', 'price')
);
\Savingfor\ElasticsearchQueryBuilder\Aggregations\MinAggregation::create('min_price', 'price');
\Savingfor\ElasticsearchQueryBuilder\Aggregations\MinAggregation::create('min_price', 'price');
\Savingfor\ElasticsearchQueryBuilder\Aggregations\ReverseNestedAggregation::create(
'name',
...$aggregations
);
\Savingfor\ElasticsearchQueryBuilder\Aggregations\TopHitsAggregation::create(
'top_sales_hits',
size: 10,
);
use Savingfor\ElasticsearchQueryBuilder\Sorts\Sort;
$builder
->addSort(Sort::create('age', Sort::DESC))
->addSort(
Sort::create('score', Sort::ASC)
->unmappedType('long')
->missing(0)
);
$builder->fields('user.id', 'http.*.status');
use Savingfor\ElasticsearchQueryBuilder\Builder;
$pageSize = 100;
$pageNumber = $_GET['page'] ?? 1;
$pageResults = (new Builder(\Elasticsearch\ClientBuilder::create()))
->size($pageSize)
->from(($pageNumber - 1) * $pageSize)
->search();