PHP code example of opsource / queryadapter
1. Go to this page and download the library: Download opsource/queryadapter 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/ */
opsource / queryadapter example snippets
$data = [
['index' => ['_id' => 1]],
['name' => 'Product A', 'price' => 100],
['index' => ['_id' => 2]],
['name' => 'Product B', 'price' => 200],
];
$result = $this->bulk($data);
$indexInfo = $this->catIndices('my_index');
$result = $this->indicesDelete('my_index');
$settings = [
'settings' => [
'number_of_shards' => 1,
'number_of_replicas' => 1
]
];
$result = $this->indicesIndex('my_new_index', $settings);
$result = $this->indicesRefresh();
$query = $this->query()->match('name', 'Product A')->get();
use Ensi\LaravelElasticQuery\ElasticIndex;
class ProductsIndex extends ElasticIndex
{
protected string $name = 'test_products';
protected string $indicator = 'product_id';
}
$searchQuery = ProductsIndex::queryEngine();
$hits = $searchQuery
->where('rating', '>=', 5)
->whereDoesntHave('offers', fn(BoolQuery $queryEngine) => $queryEngine->where('seller_id', 10)->where('active', false))
->sortBy('rating', 'desc')
->sortByNested('offers', fn(SortableQuery $queryEngine) => $queryEngine->where('active', true)->sortBy('price', mode: 'min'))
->take(25)
->get();
$searchQuery->where('field', 'value');
$searchQuery->where('field', '>', 'value'); // Operators: `=`, `!=`, `>`, `<`, `>=`, `<=`
$searchQuery->whereNot('field', 'value'); // Equivalent to `where('field', '!=', 'value')`
$searchQuery->whereIn('field', ['value1', 'value2']);
$searchQuery->whereNotIn('field', ['value1', 'value2']);
$searchQuery->whereNull('field');
$searchQuery->whereNotNull('field');
$searchQuery->whereHas('nested_field', fn(BoolQuery $subQuery) => $subQuery->where('field_in_nested', 'value'));
$searchQuery->whereDoesntHave('nested_field', function (BoolQuery $subQuery) {
$subQuery->whereHas('nested_field', fn(BoolQuery $subQuery2) => $subQuery2->whereNot('field', 'value'));
});
$searchQuery->whereMatch('field_one', 'queryEngine string');
$searchQuery->whereMultiMatch(['field_one^3', 'field_two'], 'queryEngine string', MatchType::MOST_FIELDS);
$searchQuery->sortBy('field', SortOrder::DESC, SortMode::MAX, MissingValuesMode::FIRST);
$searchQuery->sortByNested('nested_field', fn(SortableQuery $subQuery) => $subQuery->where('field_in_nested', 'value')->sortBy('field'));
$searchQuery->minSortBy('field', 'asc');
$searchQuery->maxSortBy('field', 'asc');
$searchQuery->avgSortBy('field', 'asc');
$searchQuery->sumSortBy('field', 'asc');
$searchQuery->medianSortBy('field', 'asc');
$page = $searchQuery->paginate(15, 45);
$page = $searchQuery->cursorPaginate(10);
$pageNext = $searchQuery->cursorPaginate(10, $page->next);
$aggQuery = ProductsIndex::aggregate();
$aggs = $aggQuery
->where('active', true)
->terms('codes', 'code')
->count('product_count', 'product_id')
->nested(
'offers',
fn(AggregationsBuilder $builder) => $builder->where('seller_id', 10)->minmax('price', 'price')
);
$aggQuery->terms('agg_name', 'field', 25);
$aggQuery->minmax('agg_name', 'field');
$aggQuery->count('agg_name', 'field');
$sugQuery = ProductsIndex::suggest();
$suggests = $sugQuery->phrase('suggestName', 'name.trigram')->text('glves')->size(1)->shardSize(3)->get();
$aggQuery->term('suggestName', 'name.trigram')->text('glves')->get();
$aggQuery->phrase('suggestName', 'name.trigram')->text('glves')->get();
ElasticQuery::enableQueryLog();
$records = ElasticQuery::getQueryLog();
ElasticQuery::disableQueryLog();
sh
php artisan engine:make {type} [--model=] [--module=] [--index=] [--force] [--facade] [--job]