Skip to content
<?php
namespace IQDEV\ElasticSearch\Order;
class OrderField extends Order
{
}
<?php
namespace IQDEV\ElasticSearch\Order;
abstract class OrderType
{
protected static string $code;
public static function getType(): string
{
return static::$code;
}
}
<?php
namespace IQDEV\ElasticSearch;
use IQDEV\ElasticSearch\Document\ProductCollection;
use IQDEV\ElasticSearch\Facet\Collection\FacetResultCollection;
class Result
{
private ProductCollection $products;
private FacetResultCollection $facets;
private int $total = 0;
public function __construct()
{
$this->products = new ProductCollection();
$this->facets = new FacetResultCollection();
}
public function setTotal(int $total): void
{
$this->total = $total;
}
public function getTotal(): int
{
return $this->total;
}
public function getProducts(): ProductCollection
{
return $this->products;
}
public function getFacets(): FacetResultCollection
{
return $this->facets;
}
}
...@@ -13,11 +13,10 @@ final class Aggs implements Esable ...@@ -13,11 +13,10 @@ final class Aggs implements Esable
private ?Nested $nested = null; private ?Nested $nested = null;
private ?Terms $terms = null; private ?Terms $terms = null;
private ?Stats $stats = null; private ?Stats $stats = null;
private string $key;
public function __construct(string $key) public function __construct(
{ private string $key
$this->key = $key; ) {
} }
public function addAggs(Aggs $aggs): self public function addAggs(Aggs $aggs): self
......
...@@ -6,11 +6,9 @@ use IQDEV\ElasticSearch\Esable; ...@@ -6,11 +6,9 @@ use IQDEV\ElasticSearch\Esable;
final class Stats implements Esable final class Stats implements Esable
{ {
private string $field; public function __construct(
private string $field
public function __construct(string $field) ) {
{
$this->field = $field;
} }
public function es(): array public function es(): array
......
...@@ -7,11 +7,10 @@ use IQDEV\ElasticSearch\Esable; ...@@ -7,11 +7,10 @@ use IQDEV\ElasticSearch\Esable;
final class Terms implements Esable final class Terms implements Esable
{ {
private array $options = []; private array $options = [];
private string $field;
public function __construct(string $field) public function __construct(
{ private string $field
$this->field = $field; ) {
} }
public function setSize(int $size): self public function setSize(int $size): self
......
...@@ -7,15 +7,14 @@ use IQDEV\ElasticSearch\Search\Nested; ...@@ -7,15 +7,14 @@ use IQDEV\ElasticSearch\Search\Nested;
final class FilterKeywordFacet implements Esable final class FilterKeywordFacet implements Esable
{ {
public string $key; /**
* @param string $key
/** @var string|string[] */ * @param string|array<string> $value
public $value; */
public function __construct(
public function __construct(string $key, $value) public string $key,
{ public string|array $value
$this->key = $key; ) {
$this->value = $value;
} }
public function es(): array public function es(): array
...@@ -25,9 +24,8 @@ final class FilterKeywordFacet implements Esable ...@@ -25,9 +24,8 @@ final class FilterKeywordFacet implements Esable
$nested = new Nested(); $nested = new Nested();
$query = new Query(); $query = new Query();
$query $query->getFilter()->add(new Terms($path . '.facet_code', $this->key));
->filter(new Terms($path . '.facet_code', $this->key)) $query->getFilter()->add(new Terms($path . '.facet_value', $this->value));
->filter(new Terms($path . '.facet_value', $this->value));
$nested $nested
->setPath($path) ->setPath($path)
......
...@@ -3,19 +3,16 @@ ...@@ -3,19 +3,16 @@
namespace IQDEV\ElasticSearch\Search\BoolQuery; namespace IQDEV\ElasticSearch\Search\BoolQuery;
use IQDEV\ElasticSearch\Esable; use IQDEV\ElasticSearch\Esable;
use IQDEV\ElasticSearch\Criteria\Filter\FilterOperator;
use IQDEV\ElasticSearch\Search\Nested; use IQDEV\ElasticSearch\Search\Nested;
use IQDEV\Search\Filter\FilterOperator;
final class FilterNumberFacet implements Esable final class FilterNumberFacet implements Esable
{ {
public string $key;
public array $conditions; public function __construct(
public string $key,
public function __construct(string $key, array $conditions) public array $conditions
{ ) {
$this->key = $key;
$this->conditions = $conditions;
} }
public function es(): array public function es(): array
...@@ -26,32 +23,22 @@ final class FilterNumberFacet implements Esable ...@@ -26,32 +23,22 @@ final class FilterNumberFacet implements Esable
$query = new Query(); $query = new Query();
$query $query
->filter(new Stats($path.'.facet_code', $this->key)); ->getFilter()->add(new Stats($path.'.facet_code', $this->key));
$conditions = []; $conditions = [];
foreach ($this->conditions as $operator => $value) { foreach ($this->conditions as $operator => $value) {
switch ($operator) { $key = in_array(FilterOperator::from($operator), [
case FilterOperator::GTE: FilterOperator::GTE,
$key = 'gte'; FilterOperator::LTE,
break; FilterOperator::GT,
case FilterOperator::LTE: FilterOperator::LT,
$key = 'lte'; ]) ? $operator : null;
break;
case FilterOperator::GT:
$key = 'gt';
break;
case FilterOperator::LT:
$key = 'lt';
break;
default:
$key = null;
break;
}
if (isset($key)) { if (isset($key)) {
$conditions[$key] = $value; $conditions[$key] = $value;
} }
} }
$query->filter(new Stats($path.'.facet_value', $conditions)); $query->getFilter()->add(new Stats($path.'.facet_value', $conditions));
$nested $nested
->setPath($path) ->setPath($path)
......
...@@ -32,43 +32,34 @@ final class Query implements Esable ...@@ -32,43 +32,34 @@ final class Query implements Esable
* @param Terms|Nested $item * @param Terms|Nested $item
* @return $this * @return $this
*/ */
public function match($item): self public function getMatch(): BoolQueryCollection
{ {
$this->match->add($item); return $this->match;
return $this;
} }
/** public function getMust(): BoolQueryCollection
* @param Terms|Nested $item
* @return $this
*/
public function must($item): self
{ {
$this->must->add($item); return $this->must;
return $this;
} }
public function filter(Esable $item): self public function getFilter(): BoolQueryCollection
{ {
$this->filter->add($item); return $this->filter;
return $this;
} }
public function should(Esable $item): self public function setFilter(BoolQueryCollection $filter): BoolQueryCollection
{ {
$this->should->add($item); return $this->filter;
return $this;
} }
public function mustNot(Esable $item): self public function getShould(): BoolQueryCollection
{ {
$this->mustNot->add($item); return $this->should;
}
return $this; public function getMustNot(): BoolQueryCollection
{
return $this->mustNot;
} }
public function isEmpty(): bool public function isEmpty(): bool
...@@ -127,4 +118,34 @@ final class Query implements Esable ...@@ -127,4 +118,34 @@ final class Query implements Esable
], ],
]; ];
} }
public function modify(Query $another): self
{
foreach ($another->getMust() as $item) {
$this->getMust()->add($item);
}
foreach ($another->getFilter() as $item) {
$this->getFilter()->add($item);
}
foreach ($another->getShould() as $item) {
$this->getShould()->add($item);
}
foreach ($another->getMustNot() as $item) {
$this->getMustNot()->add($item);
}
foreach ($another->getMatch() as $item) {
$this->getMatch()->add($item);
}
return $this;
}
public function __clone(): void
{
$this->must = clone $this->must;
$this->should = clone $this->should;
$this->filter = clone $this->filter;
$this->mustNot = clone $this->mustNot;
$this->match = clone $this->match;
}
} }
...@@ -6,19 +6,14 @@ use IQDEV\ElasticSearch\Esable; ...@@ -6,19 +6,14 @@ use IQDEV\ElasticSearch\Esable;
final class Stats implements Esable final class Stats implements Esable
{ {
private string $key;
/** /**
* @var string|float|string[]|float[] * @param string $key
* @param string|float|array<string|float> $value
*/ */
private $value; public function __construct(
private string $key,
/** private string|float|array $value
* @param string|float|string[]|float[] $value ) {
*/
public function __construct(string $key, $value)
{
$this->key = $key;
$this->value = $value;
} }
public function es(): array public function es(): array
......
...@@ -6,19 +6,14 @@ use IQDEV\ElasticSearch\Esable; ...@@ -6,19 +6,14 @@ use IQDEV\ElasticSearch\Esable;
final class Terms implements Esable final class Terms implements Esable
{ {
private string $key;
/** /**
* @var string|float|string[]|float[] * @param string $key
* @param string|float|bool|array<string|float> $value
*/ */
private $value; public function __construct(
private string $key,
/** private mixed $value
* @param string|float|string[]|float[] $value ) {
*/
public function __construct(string $key, $value)
{
$this->key = $key;
$this->value = $value;
} }
public function es(): array public function es(): array
......
...@@ -6,13 +6,10 @@ use IQDEV\ElasticSearch\Esable; ...@@ -6,13 +6,10 @@ use IQDEV\ElasticSearch\Esable;
class Pagination implements Esable class Pagination implements Esable
{ {
private ?int $size; public function __construct(
private ?int $from; private ?int $size = null,
private ?int $from = null
public function __construct(?int $size = null, ?int $from = null) ) {
{
$this->size = $size;
$this->from = $from;
} }
public function es(): array public function es(): array
......
...@@ -3,7 +3,8 @@ ...@@ -3,7 +3,8 @@
namespace IQDEV\ElasticSearch\Search; namespace IQDEV\ElasticSearch\Search;
use IQDEV\ElasticSearch\Esable; use IQDEV\ElasticSearch\Esable;
use IQDEV\ElasticSearch\Order\OrderCollection; use IQDEV\ElasticSearch\Criteria\Match\QueryMatchCollection;
use IQDEV\ElasticSearch\Criteria\Order\OrderCollection;
use IQDEV\ElasticSearch\Search\Aggs\AggsCollection; use IQDEV\ElasticSearch\Search\Aggs\AggsCollection;
use IQDEV\ElasticSearch\Search\BoolQuery\Query; use IQDEV\ElasticSearch\Search\BoolQuery\Query;
...@@ -14,7 +15,7 @@ final class Request implements Esable ...@@ -14,7 +15,7 @@ final class Request implements Esable
private ?AggsCollection $aggs = null; private ?AggsCollection $aggs = null;
private ?Pagination $pagination = null; private ?Pagination $pagination = null;
private ?OrderCollection $sort = null; private ?OrderCollection $sort = null;
private array $match = []; private ?QueryMatchCollection $matchCollection = null;
private ?array $source = null; private ?array $source = null;
public function setPagination(?Pagination $pagination): self public function setPagination(?Pagination $pagination): self
...@@ -33,6 +34,13 @@ final class Request implements Esable ...@@ -33,6 +34,13 @@ final class Request implements Esable
return $this->query; return $this->query;
} }
public function setQuery(Query $query): self
{
$this->query = $query;
return $this;
}
public function getPostFilter(): Query public function getPostFilter(): Query
{ {
if (null === $this->postFilter) { if (null === $this->postFilter) {
...@@ -42,6 +50,13 @@ final class Request implements Esable ...@@ -42,6 +50,13 @@ final class Request implements Esable
return $this->postFilter; return $this->postFilter;
} }
public function setPostFilter(Query $query): self
{
$this->postFilter = $query;
return $this;
}
public function getAggs(): AggsCollection public function getAggs(): AggsCollection
{ {
if (null === $this->aggs) { if (null === $this->aggs) {
...@@ -51,16 +66,25 @@ final class Request implements Esable ...@@ -51,16 +66,25 @@ final class Request implements Esable
return $this->aggs; return $this->aggs;
} }
public function getPagination(): ?Pagination public function setAggs(AggsCollection $aggs): self
{ {
return $this->pagination; $this->aggs = $aggs;
return $this;
} }
public function addMatch(string $key, array $param): self public function getQueryMatch(): QueryMatchCollection
{ {
$this->match[$key] = $param; if (null === $this->matchCollection) {
$this->matchCollection = new QueryMatchCollection();
}
return $this; return $this->matchCollection;
}
public function getPagination(): ?Pagination
{
return $this->pagination;
} }
public function setSource(array $s): self public function setSource(array $s): self
...@@ -95,10 +119,8 @@ final class Request implements Esable ...@@ -95,10 +119,8 @@ final class Request implements Esable
$request['query'] = $this->query->es()['query']; $request['query'] = $this->query->es()['query'];
} }
if (false === empty($this->match)) { if ($this->matchCollection && false === $this->matchCollection->isEmpty()) {
foreach ($this->match as $key => $value) { $request['query']['match'] = $this->matchCollection->es();
$request['query']['match'][$key] = $value;
}
} }
if ($this->aggs) { if ($this->aggs) {
......
...@@ -5,24 +5,20 @@ namespace IQDEV\ElasticSearch; ...@@ -5,24 +5,20 @@ namespace IQDEV\ElasticSearch;
use Elastic\Elasticsearch\Client; use Elastic\Elasticsearch\Client;
use Elastic\Elasticsearch\Exception\ClientResponseException; use Elastic\Elasticsearch\Exception\ClientResponseException;
use Elastic\Elasticsearch\Exception\ServerResponseException; use Elastic\Elasticsearch\Exception\ServerResponseException;
use IQDEV\ElasticSearch\Converter\CriteriaToEsRequest; use IQDEV\ElasticSearch\Converter\Request\CriteriaToRequest;
use IQDEV\ElasticSearch\Converter\EsResponseToResult; use IQDEV\ElasticSearch\Converter\Result\EsResponseToResult;
use IQDEV\Search\Criteria; use IQDEV\ElasticSearch\Criteria\Criteria;
use IQDEV\Search\Result;
class SearchService implements \IQDEV\Search\SearchService class SearchService implements Searchable
{ {
private Client $esClient; private CriteriaToRequest $criteriaToRequest;
private Configuration $configuration;
private CriteriaToEsRequest $criteriaToEsRequest;
private EsResponseToResult $esResponseToResult; private EsResponseToResult $esResponseToResult;
public function __construct(Client $esClient, Configuration $configuration) public function __construct(
{ private Client $esClient,
$this->esClient = $esClient; private Configuration $configuration
$this->configuration = $configuration; ) {
$this->criteriaToRequest = new CriteriaToRequest($this->configuration);
$this->criteriaToEsRequest = new CriteriaToEsRequest();
$this->esResponseToResult = new EsResponseToResult(); $this->esResponseToResult = new EsResponseToResult();
} }
...@@ -32,7 +28,7 @@ class SearchService implements \IQDEV\Search\SearchService ...@@ -32,7 +28,7 @@ class SearchService implements \IQDEV\Search\SearchService
*/ */
public function search(Criteria $criteria): Result public function search(Criteria $criteria): Result
{ {
$request = $this->criteriaToEsRequest->fromCriteria($criteria); $request = $this->criteriaToRequest->fromCriteria($criteria);
$response = $this->esClient->search([ $response = $this->esClient->search([
'index' => $this->configuration->getIndexName(), 'index' => $this->configuration->getIndexName(),
......
<?php
namespace IQDEV\ElasticSearch;
use IQDEV\ElasticSearch\Criteria\Criteria;
interface Searchable
{
/**
* @param Criteria $criteria
*
* @return Result
*/
public function search(Criteria $criteria): Result;
}
...@@ -2,19 +2,20 @@ ...@@ -2,19 +2,20 @@
namespace IQDEV\ElasticSearchTests\Filter; namespace IQDEV\ElasticSearchTests\Filter;
use IQDEV\ElasticSearch\Criteria\Criteria;
use IQDEV\ElasticSearch\Criteria\Filter\Collection\FilterGroupCollection;
use IQDEV\ElasticSearch\Criteria\Filter\Field;
use IQDEV\ElasticSearch\Criteria\Filter\Filter;
use IQDEV\ElasticSearch\Criteria\Filter\FilterOperator;
use IQDEV\ElasticSearch\Criteria\Filter\LogicOperator;
use IQDEV\ElasticSearch\Criteria\Filter\Value\FilterKeyword;
use IQDEV\ElasticSearch\Criteria\Filter\Value\FilterNumber;
use IQDEV\ElasticSearch\Criteria\Query\SearchQuery;
use IQDEV\ElasticSearch\Criteria\Search\Search;
use IQDEV\ElasticSearch\Document\Property\Property;
use IQDEV\ElasticSearchTests\AbstractTestCase; use IQDEV\ElasticSearchTests\AbstractTestCase;
use IQDEV\ElasticSearchTests\Helpers\FormatData; use IQDEV\ElasticSearchTests\Helpers\FormatData;
use IQDEV\ElasticSearchTests\Service\SearchClient; use IQDEV\ElasticSearchTests\Service\SearchClient;
use IQDEV\Search\Criteria;
use IQDEV\Search\Filter\Field;
use IQDEV\Search\Filter\Filter;
use IQDEV\Search\Filter\FilterGroupCollection;
use IQDEV\Search\Filter\FilterKeyword;
use IQDEV\Search\Filter\FilterNumber;
use IQDEV\Search\Filter\FilterOperator;
use IQDEV\Search\Filter\FilterType;
use IQDEV\Search\Filter\LogicOperator;
use IQDEV\Search\Query\SearchQuery;
/** /**
* Тестирование агрегирующих функций * Тестирование агрегирующих функций
...@@ -24,16 +25,11 @@ class AggsTest extends AbstractTestCase ...@@ -24,16 +25,11 @@ class AggsTest extends AbstractTestCase
public function testEmptyFilterByCategory() public function testEmptyFilterByCategory()
{ {
$criteria = new Criteria(); $criteria = new Criteria();
$criteria->getSearch()->add(
$criteria->filters()->add( new Search(
(new FilterGroupCollection([ new Property('category_id'),
new Filter( 't-short',
new Field('category_id'), ),
new FilterOperator(FilterOperator::EQ),
new FilterKeyword('t-short')
)
]))
->setFilterType(FilterType::query())
); );
$q = new SearchQuery($criteria); $q = new SearchQuery($criteria);
...@@ -146,22 +142,17 @@ class AggsTest extends AbstractTestCase ...@@ -146,22 +142,17 @@ class AggsTest extends AbstractTestCase
public function testEmptyKeywordFilter() public function testEmptyKeywordFilter()
{ {
$criteria = new Criteria(); $criteria = new Criteria();
$criteria->getSearch()->add(
$criteria->filters()->add( new Search(
(new FilterGroupCollection([ new Property('category_id'),
new Filter( 't-short',
new Field('category_id'), ),
new FilterOperator(FilterOperator::EQ),
new FilterKeyword('t-short')
)
]))
->setFilterType(FilterType::query())
); );
$criteria->filters()->add(new FilterGroupCollection([ $criteria->getFilters()->add(new FilterGroupCollection([
new Filter( new Filter(
new Field('color'), new Field('color'),
new FilterOperator(FilterOperator::EQ), FilterOperator::EQ,
new FilterKeyword('white') new FilterKeyword('white')
) )
])); ]));
...@@ -275,22 +266,16 @@ class AggsTest extends AbstractTestCase ...@@ -275,22 +266,16 @@ class AggsTest extends AbstractTestCase
public function testRangeFilter() public function testRangeFilter()
{ {
$criteria = new Criteria(); $criteria = new Criteria();
$criteria->getSearch()->add(
$criteria->filters()->add( new Search(
(new FilterGroupCollection([ new Property('category_id'),
new Filter( 't-short',
new Field('category_id'), ),
new FilterOperator(FilterOperator::EQ),
new FilterKeyword('t-short')
)
]))
->setFilterType(FilterType::query())
); );
$criteria->getFilters()->add(new FilterGroupCollection([
$criteria->filters()->add(new FilterGroupCollection([
new Filter( new Filter(
new Field('price'), new Field('price'),
new FilterOperator(FilterOperator::LTE), FilterOperator::LTE,
new FilterNumber(104.50) new FilterNumber(104.50)
) )
])); ]));
...@@ -403,30 +388,25 @@ class AggsTest extends AbstractTestCase ...@@ -403,30 +388,25 @@ class AggsTest extends AbstractTestCase
public function testCombineFilter() public function testCombineFilter()
{ {
$criteria = new Criteria(); $criteria = new Criteria();
$criteria->getSearch()->add(
$criteria->filters()->add( new Search(
(new FilterGroupCollection([ new Property('category_id'),
new Filter( 't-short',
new Field('category_id'), ),
new FilterOperator(FilterOperator::EQ),
new FilterKeyword('t-short')
)
]))
->setFilterType(FilterType::query())
); );
$criteria->filters()->add(new FilterGroupCollection([ $criteria->getFilters()->add(new FilterGroupCollection([
new Filter( new Filter(
new Field('color'), new Field('color'),
new FilterOperator(FilterOperator::EQ), FilterOperator::EQ,
new FilterKeyword('black') new FilterKeyword('black')
) )
])); ]));
$criteria->filters()->add(new FilterGroupCollection([ $criteria->getFilters()->add(new FilterGroupCollection([
new Filter( new Filter(
new Field('price'), new Field('price'),
new FilterOperator(FilterOperator::LTE), FilterOperator::LTE,
new FilterNumber(104) new FilterNumber(104)
) )
])); ]));
...@@ -538,30 +518,25 @@ class AggsTest extends AbstractTestCase ...@@ -538,30 +518,25 @@ class AggsTest extends AbstractTestCase
public function testCombineFilterTwo() public function testCombineFilterTwo()
{ {
$criteria = new Criteria(); $criteria = new Criteria();
$criteria->getSearch()->add(
$criteria->filters()->add( new Search(
(new FilterGroupCollection([ new Property('category_id'),
new Filter( 't-short',
new Field('category_id'), ),
new FilterOperator(FilterOperator::EQ),
new FilterKeyword('t-short')
)
]))
->setFilterType(FilterType::query())
); );
$criteria->filters()->add(new FilterGroupCollection([ $criteria->getFilters()->add(new FilterGroupCollection([
new Filter( new Filter(
new Field('color'), new Field('color'),
new FilterOperator(FilterOperator::EQ), FilterOperator::EQ,
new FilterKeyword('red') new FilterKeyword('red')
) )
])); ]));
$criteria->filters()->add(new FilterGroupCollection([ $criteria->getFilters()->add(new FilterGroupCollection([
new Filter( new Filter(
new Field('price'), new Field('price'),
new FilterOperator(FilterOperator::LTE), FilterOperator::LTE,
new FilterNumber(105) new FilterNumber(105)
) )
])); ]));
...@@ -675,38 +650,33 @@ class AggsTest extends AbstractTestCase ...@@ -675,38 +650,33 @@ class AggsTest extends AbstractTestCase
public function testKeywordFilter() public function testKeywordFilter()
{ {
$criteria = new Criteria(); $criteria = new Criteria();
$criteria->getSearch()->add(
$criteria->filters()->add( new Search(
(new FilterGroupCollection([ new Property('category_id'),
new Filter( 't-short',
new Field('category_id'), ),
new FilterOperator(FilterOperator::EQ),
new FilterKeyword('t-short')
)
]))
->setFilterType(FilterType::query())
); );
$criteria->filters()->add(new FilterGroupCollection([ $criteria->getFilters()->add(new FilterGroupCollection([
new Filter( new Filter(
new Field('color'), new Field('color'),
new FilterOperator(FilterOperator::EQ), FilterOperator::EQ,
new FilterKeyword('white') new FilterKeyword('white')
) )
])); ]));
$criteria->filters()->add(new FilterGroupCollection([ $criteria->getFilters()->add(new FilterGroupCollection([
new Filter( new Filter(
new Field('brand'), new Field('brand'),
new FilterOperator(FilterOperator::EQ), FilterOperator::EQ,
new FilterKeyword('nike') new FilterKeyword('nike')
) )
])); ]));
$criteria->filters()->add(new FilterGroupCollection([ $criteria->getFilters()->add(new FilterGroupCollection([
new Filter( new Filter(
new Field('price'), new Field('price'),
new FilterOperator(FilterOperator::GT), FilterOperator::GT,
new FilterNumber(100) new FilterNumber(100)
) )
])); ]));
...@@ -820,40 +790,35 @@ class AggsTest extends AbstractTestCase ...@@ -820,40 +790,35 @@ class AggsTest extends AbstractTestCase
public function testKeywordFilterTwo() public function testKeywordFilterTwo()
{ {
$criteria = new Criteria(); $criteria = new Criteria();
$criteria->getSearch()->add(
$criteria->filters()->add( new Search(
(new FilterGroupCollection([ new Property('category_id'),
new Filter( 't-short',
new Field('category_id'), ),
new FilterOperator(FilterOperator::EQ),
new FilterKeyword('t-short')
)
]))
->setFilterType(FilterType::query())
); );
$criteria->filters()->add(new FilterGroupCollection([ $criteria->getFilters()->add(new FilterGroupCollection([
new Filter( new Filter(
new Field('color'), new Field('color'),
new FilterOperator(FilterOperator::EQ), FilterOperator::EQ,
new FilterKeyword('white') new FilterKeyword('white')
) )
])); ]));
$criteria->filters()->add( $criteria->getFilters()->add(
(new FilterGroupCollection([ (new FilterGroupCollection([
new Filter( new Filter(
new Field('brand'), new Field('brand'),
new FilterOperator(FilterOperator::EQ), FilterOperator::EQ,
new FilterKeyword('nike') new FilterKeyword('nike')
), ),
new Filter( new Filter(
new Field('brand'), new Field('brand'),
new FilterOperator(FilterOperator::EQ), FilterOperator::EQ,
new FilterKeyword('reebok') new FilterKeyword('reebok')
) )
])) ]))
->setLogicalType(LogicOperator::or()) ->setLogicOperator(LogicOperator::OR)
); );
......
<?php <?php
namespace IQDEV\ElasticSearchTests\FIlter; namespace IQDEV\ElasticSearchTests\Filter;
use IQDEV\ElasticSearch\Criteria\Criteria;
use IQDEV\ElasticSearch\Criteria\Filter\Collection\FilterGroupCollection;
use IQDEV\ElasticSearch\Criteria\Filter\Field;
use IQDEV\ElasticSearch\Criteria\Filter\Filter;
use IQDEV\ElasticSearch\Criteria\Filter\FilterOperator;
use IQDEV\ElasticSearch\Criteria\Filter\Value\FilterKeyword;
use IQDEV\ElasticSearch\Criteria\Filter\Value\FilterNumber;
use IQDEV\ElasticSearch\Criteria\Query\SearchQuery;
use IQDEV\ElasticSearchTests\AbstractTestCase; use IQDEV\ElasticSearchTests\AbstractTestCase;
use IQDEV\ElasticSearchTests\Helpers\FormatData; use IQDEV\ElasticSearchTests\Helpers\FormatData;
use IQDEV\ElasticSearchTests\Service\SearchClient; use IQDEV\ElasticSearchTests\Service\SearchClient;
use IQDEV\Search\Criteria;
use IQDEV\Search\Filter\Field;
use IQDEV\Search\Filter\Filter;
use IQDEV\Search\Filter\FilterGroupCollection;
use IQDEV\Search\Filter\FilterKeyword;
use IQDEV\Search\Filter\FilterNumber;
use IQDEV\Search\Filter\FilterOperator;
use IQDEV\Search\Query\SearchQuery;
class CommonRangeKeywordsTest extends AbstractTestCase class CommonRangeKeywordsTest extends AbstractTestCase
{ {
...@@ -25,18 +25,18 @@ class CommonRangeKeywordsTest extends AbstractTestCase ...@@ -25,18 +25,18 @@ class CommonRangeKeywordsTest extends AbstractTestCase
{ {
$criteria = new Criteria(); $criteria = new Criteria();
$criteria->filters()->add(new FilterGroupCollection([ $criteria->getFilters()->add(new FilterGroupCollection([
new Filter( new Filter(
new Field('color'), new Field('color'),
new FilterOperator(FilterOperator::EQ), FilterOperator::EQ,
new FilterKeyword('red') new FilterKeyword('red')
) )
])); ]));
$criteria->filters()->add(new FilterGroupCollection([ $criteria->getFilters()->add(new FilterGroupCollection([
new Filter( new Filter(
new Field('price'), new Field('price'),
new FilterOperator(FilterOperator::GT), FilterOperator::GT,
new FilterNumber(102) new FilterNumber(102)
) )
])); ]));
...@@ -65,18 +65,18 @@ class CommonRangeKeywordsTest extends AbstractTestCase ...@@ -65,18 +65,18 @@ class CommonRangeKeywordsTest extends AbstractTestCase
{ {
$criteria = new Criteria(); $criteria = new Criteria();
$criteria->filters()->add(new FilterGroupCollection([ $criteria->getFilters()->add(new FilterGroupCollection([
new Filter( new Filter(
new Field('color'), new Field('color'),
new FilterOperator(FilterOperator::EQ), FilterOperator::EQ,
new FilterKeyword('red') new FilterKeyword('red')
) )
])); ]));
$criteria->filters()->add(new FilterGroupCollection([ $criteria->getFilters()->add(new FilterGroupCollection([
new Filter( new Filter(
new Field('price'), new Field('price'),
new FilterOperator(FilterOperator::LT), FilterOperator::LT,
new FilterNumber(102) new FilterNumber(102)
) )
])); ]));
...@@ -105,23 +105,23 @@ class CommonRangeKeywordsTest extends AbstractTestCase ...@@ -105,23 +105,23 @@ class CommonRangeKeywordsTest extends AbstractTestCase
{ {
$criteria = new Criteria(); $criteria = new Criteria();
$criteria->filters()->add(new FilterGroupCollection([ $criteria->getFilters()->add(new FilterGroupCollection([
new Filter( new Filter(
new Field('color'), new Field('color'),
new FilterOperator(FilterOperator::EQ), FilterOperator::EQ,
new FilterKeyword('red') new FilterKeyword('red')
) )
])); ]));
$criteria->filters()->add(new FilterGroupCollection([ $criteria->getFilters()->add(new FilterGroupCollection([
new Filter( new Filter(
new Field('price'), new Field('price'),
new FilterOperator(FilterOperator::GTE), FilterOperator::GTE,
new FilterNumber(101) new FilterNumber(101)
), ),
new Filter( new Filter(
new Field('price'), new Field('price'),
new FilterOperator(FilterOperator::LTE), FilterOperator::LTE,
new FilterNumber(104) new FilterNumber(104)
), ),
])); ]));
......
...@@ -4,14 +4,14 @@ namespace IQDEV\ElasticSearchTests\Filter; ...@@ -4,14 +4,14 @@ namespace IQDEV\ElasticSearchTests\Filter;
use Elastic\Elasticsearch\Client; use Elastic\Elasticsearch\Client;
use IQDEV\ElasticSearch\Configuration; use IQDEV\ElasticSearch\Configuration;
use IQDEV\ElasticSearch\Converter\EsResponseToResult; use IQDEV\ElasticSearch\Converter\Result\EsResponseToResult;
use IQDEV\ElasticSearch\Indexer\IndexRunner; use IQDEV\ElasticSearch\Indexer\IndexRunner;
use IQDEV\ElasticSearchTests\AbstractTestCase; use IQDEV\ElasticSearchTests\AbstractTestCase;
use IQDEV\ElasticSearchTests\Config\ChangingStateConfiguration; use IQDEV\ElasticSearchTests\Config\ChangingStateConfiguration;
use IQDEV\ElasticSearchTests\Factory\ClientFactory; use IQDEV\ElasticSearchTests\Factory\ClientFactory;
use IQDEV\ElasticSearchTests\Helpers\FormatData; use IQDEV\ElasticSearchTests\Helpers\FormatData;
use IQDEV\ElasticSearchTests\Helpers\TestIndexProvider; use IQDEV\ElasticSearchTests\Helpers\TestIndexProvider;
use Psr\Log\Test\TestLogger; use Psr\Log\NullLogger;
class IndexesTest extends AbstractTestCase class IndexesTest extends AbstractTestCase
{ {
...@@ -40,7 +40,7 @@ class IndexesTest extends AbstractTestCase ...@@ -40,7 +40,7 @@ class IndexesTest extends AbstractTestCase
$this->indexRunner = new IndexRunner( $this->indexRunner = new IndexRunner(
$this->esClient, $this->esClient,
$this->configuration, $this->configuration,
new TestLogger() new NullLogger()
); );
} }
......
...@@ -2,17 +2,18 @@ ...@@ -2,17 +2,18 @@
namespace IQDEV\ElasticSearchTests\Filter; namespace IQDEV\ElasticSearchTests\Filter;
use IQDEV\ElasticSearch\Criteria\Criteria;
use IQDEV\ElasticSearch\Criteria\Filter\Collection\FilterGroupCollection;
use IQDEV\ElasticSearch\Criteria\Filter\Field;
use IQDEV\ElasticSearch\Criteria\Filter\Filter;
use IQDEV\ElasticSearch\Criteria\Filter\FilterOperator;
use IQDEV\ElasticSearch\Criteria\Filter\Value\FilterKeyword;
use IQDEV\ElasticSearch\Criteria\Query\SearchQuery;
use IQDEV\ElasticSearch\Criteria\Search\Search;
use IQDEV\ElasticSearch\Document\Property\Property;
use IQDEV\ElasticSearchTests\AbstractTestCase; use IQDEV\ElasticSearchTests\AbstractTestCase;
use IQDEV\ElasticSearchTests\Helpers\FormatData; use IQDEV\ElasticSearchTests\Helpers\FormatData;
use IQDEV\ElasticSearchTests\Service\SearchClient; use IQDEV\ElasticSearchTests\Service\SearchClient;
use IQDEV\Search\Criteria;
use IQDEV\Search\Filter\Field;
use IQDEV\Search\Filter\Filter;
use IQDEV\Search\Filter\FilterGroupCollection;
use IQDEV\Search\Filter\FilterKeyword;
use IQDEV\Search\Filter\FilterOperator;
use IQDEV\Search\Filter\FilterType;
use IQDEV\Search\Query\SearchQuery;
class KeywordsTest extends AbstractTestCase class KeywordsTest extends AbstractTestCase
{ {
...@@ -25,10 +26,10 @@ class KeywordsTest extends AbstractTestCase ...@@ -25,10 +26,10 @@ class KeywordsTest extends AbstractTestCase
{ {
$criteria = new Criteria(); $criteria = new Criteria();
$criteria->filters()->add(new FilterGroupCollection([ $criteria->getFilters()->add(new FilterGroupCollection([
new Filter( new Filter(
new Field('color'), new Field('color'),
new FilterOperator(FilterOperator::EQ), FilterOperator::EQ,
new FilterKeyword('') new FilterKeyword('')
) )
])); ]));
...@@ -55,10 +56,10 @@ class KeywordsTest extends AbstractTestCase ...@@ -55,10 +56,10 @@ class KeywordsTest extends AbstractTestCase
{ {
$criteria = new Criteria(); $criteria = new Criteria();
$criteria->filters()->add(new FilterGroupCollection([ $criteria->getFilters()->add(new FilterGroupCollection([
new Filter( new Filter(
new Field('color'), new Field('color'),
new FilterOperator(FilterOperator::EQ), FilterOperator::EQ,
new FilterKeyword('red') new FilterKeyword('red')
) )
])); ]));
...@@ -87,22 +88,17 @@ class KeywordsTest extends AbstractTestCase ...@@ -87,22 +88,17 @@ class KeywordsTest extends AbstractTestCase
public function testExistByFilterAndCategory(): void public function testExistByFilterAndCategory(): void
{ {
$criteria = new Criteria(); $criteria = new Criteria();
$criteria->getSearch()->add(
$criteria->filters()->add( new Search(
(new FilterGroupCollection([ new Property('category_id'),
new Filter( 'shoes',
new Field('category_id'), ),
new FilterOperator(FilterOperator::EQ),
new FilterKeyword('shoes')
)
]))
->setFilterType(FilterType::query())
); );
$criteria->filters()->add(new FilterGroupCollection([ $criteria->getFilters()->add(new FilterGroupCollection([
new Filter( new Filter(
new Field('color'), new Field('color'),
new FilterOperator(FilterOperator::EQ), FilterOperator::EQ,
new FilterKeyword('red') new FilterKeyword('red')
) )
])); ]));
...@@ -131,15 +127,15 @@ class KeywordsTest extends AbstractTestCase ...@@ -131,15 +127,15 @@ class KeywordsTest extends AbstractTestCase
{ {
$criteria = new Criteria(); $criteria = new Criteria();
$criteria->filters()->add(new FilterGroupCollection([ $criteria->getFilters()->add(new FilterGroupCollection([
new Filter( new Filter(
new Field('color'), new Field('color'),
new FilterOperator(FilterOperator::EQ), FilterOperator::EQ,
new FilterKeyword('red') new FilterKeyword('red')
), ),
new Filter( new Filter(
new Field('size'), new Field('size'),
new FilterOperator(FilterOperator::EQ), FilterOperator::EQ,
new FilterKeyword('xxl') new FilterKeyword('xxl')
) )
])); ]));
...@@ -166,15 +162,15 @@ class KeywordsTest extends AbstractTestCase ...@@ -166,15 +162,15 @@ class KeywordsTest extends AbstractTestCase
{ {
$criteria = new Criteria(); $criteria = new Criteria();
$criteria->filters()->add(new FilterGroupCollection([ $criteria->getFilters()->add(new FilterGroupCollection([
new Filter( new Filter(
new Field('color'), new Field('color'),
new FilterOperator(FilterOperator::EQ), FilterOperator::EQ,
new FilterKeyword('red') new FilterKeyword('red')
), ),
new Filter( new Filter(
new Field('size'), new Field('size'),
new FilterOperator(FilterOperator::EQ), FilterOperator::EQ,
new FilterKeyword('xl') new FilterKeyword('xl')
) )
])); ]));
...@@ -203,26 +199,22 @@ class KeywordsTest extends AbstractTestCase ...@@ -203,26 +199,22 @@ class KeywordsTest extends AbstractTestCase
{ {
$criteria = new Criteria(); $criteria = new Criteria();
$criteria->filters()->add( $criteria->getSearch()->add(
(new FilterGroupCollection([ new Search(
new Filter( new Property('category_id'),
new Field('category_id'), 'prices',
new FilterOperator(FilterOperator::EQ), ),
new FilterKeyword('prices')
)
]))
->setFilterType(FilterType::query())
); );
$criteria->filters()->add(new FilterGroupCollection([ $criteria->getFilters()->add(new FilterGroupCollection([
new Filter( new Filter(
new Field('color'), new Field('color'),
new FilterOperator(FilterOperator::EQ), FilterOperator::EQ,
new FilterKeyword('red') new FilterKeyword('red')
), ),
new Filter( new Filter(
new Field('size'), new Field('size'),
new FilterOperator(FilterOperator::EQ), FilterOperator::EQ,
new FilterKeyword('xl') new FilterKeyword('xl')
) )
])); ]));
......
...@@ -2,19 +2,19 @@ ...@@ -2,19 +2,19 @@
namespace IQDEV\ElasticSearchTests\Filter; namespace IQDEV\ElasticSearchTests\Filter;
use IQDEV\ElasticSearch\Criteria\Criteria;
use IQDEV\ElasticSearch\Criteria\Filter\Collection\FilterGroupCollection;
use IQDEV\ElasticSearch\Criteria\Filter\Field;
use IQDEV\ElasticSearch\Criteria\Filter\Filter;
use IQDEV\ElasticSearch\Criteria\Filter\FilterOperator;
use IQDEV\ElasticSearch\Criteria\Filter\FilterType;
use IQDEV\ElasticSearch\Criteria\Filter\LogicOperator;
use IQDEV\ElasticSearch\Criteria\Filter\Value\FilterKeyword;
use IQDEV\ElasticSearch\Criteria\Filter\Value\FilterNumber;
use IQDEV\ElasticSearch\Criteria\Query\SearchQuery;
use IQDEV\ElasticSearchTests\AbstractTestCase; use IQDEV\ElasticSearchTests\AbstractTestCase;
use IQDEV\ElasticSearchTests\Helpers\FormatData; use IQDEV\ElasticSearchTests\Helpers\FormatData;
use IQDEV\ElasticSearchTests\Service\SearchClient; use IQDEV\ElasticSearchTests\Service\SearchClient;
use IQDEV\Search\Criteria;
use IQDEV\Search\Filter\Field;
use IQDEV\Search\Filter\Filter;
use IQDEV\Search\Filter\FilterGroupCollection;
use IQDEV\Search\Filter\FilterKeyword;
use IQDEV\Search\Filter\FilterNumber;
use IQDEV\Search\Filter\FilterOperator;
use IQDEV\Search\Filter\FilterType;
use IQDEV\Search\Filter\LogicOperator;
use IQDEV\Search\Query\SearchQuery;
class QueryAndPostFilterTest extends AbstractTestCase class QueryAndPostFilterTest extends AbstractTestCase
{ {
...@@ -28,12 +28,12 @@ class QueryAndPostFilterTest extends AbstractTestCase ...@@ -28,12 +28,12 @@ class QueryAndPostFilterTest extends AbstractTestCase
$filterCollectionBrand = new FilterGroupCollection([ $filterCollectionBrand = new FilterGroupCollection([
new Filter( new Filter(
new Field('brand'), new Field('brand'),
new FilterOperator(FilterOperator::EQ), FilterOperator::EQ,
new FilterKeyword('not') new FilterKeyword('not')
) )
]); ]);
$filterCollectionBrand->setFilterType(FilterType::query()); $filterCollectionBrand->setFilterType(FilterType::QUERY);
$criteria->filters()->add($filterCollectionBrand); $criteria->getFilters()->add($filterCollectionBrand);
$q = new SearchQuery($criteria); $q = new SearchQuery($criteria);
...@@ -59,12 +59,12 @@ class QueryAndPostFilterTest extends AbstractTestCase ...@@ -59,12 +59,12 @@ class QueryAndPostFilterTest extends AbstractTestCase
$filterCollectionBrand = new FilterGroupCollection([ $filterCollectionBrand = new FilterGroupCollection([
new Filter( new Filter(
new Field('brand'), new Field('brand'),
new FilterOperator(FilterOperator::EQ), FilterOperator::EQ,
new FilterKeyword('adidas') new FilterKeyword('adidas')
) )
]); ]);
$filterCollectionBrand->setFilterType(FilterType::query()); $filterCollectionBrand->setFilterType(FilterType::QUERY);
$criteria->filters()->add($filterCollectionBrand); $criteria->getFilters()->add($filterCollectionBrand);
$q = new SearchQuery($criteria); $q = new SearchQuery($criteria);
...@@ -177,28 +177,28 @@ class QueryAndPostFilterTest extends AbstractTestCase ...@@ -177,28 +177,28 @@ class QueryAndPostFilterTest extends AbstractTestCase
$filterCollectionBrand = new FilterGroupCollection([ $filterCollectionBrand = new FilterGroupCollection([
new Filter( new Filter(
new Field('brand'), new Field('brand'),
new FilterOperator(FilterOperator::EQ), FilterOperator::EQ,
new FilterKeyword('adidas') new FilterKeyword('adidas')
), ),
new Filter( new Filter(
new Field('brand'), new Field('brand'),
new FilterOperator(FilterOperator::EQ), FilterOperator::EQ,
new FilterKeyword('nike') new FilterKeyword('nike')
), ),
]); ]);
$filterCollectionBrand $filterCollectionBrand
->setLogicalType(LogicOperator::or()) ->setLogicOperator(LogicOperator::OR)
->setFilterType(FilterType::query()); ->setFilterType(FilterType::QUERY);
$criteria->filters()->add($filterCollectionBrand); $criteria->getFilters()->add($filterCollectionBrand);
$filterCollectionBrand = new FilterGroupCollection([ $filterCollectionBrand = new FilterGroupCollection([
new Filter( new Filter(
new Field('brand'), new Field('brand'),
new FilterOperator(FilterOperator::EQ), FilterOperator::EQ,
new FilterKeyword('nike') new FilterKeyword('nike')
), ),
]); ]);
$criteria->filters()->add($filterCollectionBrand); $criteria->getFilters()->add($filterCollectionBrand);
$q = new SearchQuery($criteria); $q = new SearchQuery($criteria);
...@@ -342,23 +342,23 @@ class QueryAndPostFilterTest extends AbstractTestCase ...@@ -342,23 +342,23 @@ class QueryAndPostFilterTest extends AbstractTestCase
$filterCollectionBrand = new FilterGroupCollection([ $filterCollectionBrand = new FilterGroupCollection([
new Filter( new Filter(
new Field('brand'), new Field('brand'),
new FilterOperator(FilterOperator::EQ), FilterOperator::EQ,
new FilterKeyword('nike') new FilterKeyword('nike')
), ),
]); ]);
$filterCollectionBrand $filterCollectionBrand
->setLogicalType(LogicOperator::or()) ->setLogicOperator(LogicOperator::OR)
->setFilterType(FilterType::query()); ->setFilterType(FilterType::QUERY);
$criteria->filters()->add($filterCollectionBrand); $criteria->getFilters()->add($filterCollectionBrand);
$filterCollectionColor = new FilterGroupCollection([ $filterCollectionColor = new FilterGroupCollection([
new Filter( new Filter(
new Field('color'), new Field('color'),
new FilterOperator(FilterOperator::EQ), FilterOperator::EQ,
new FilterKeyword('white') new FilterKeyword('white')
), ),
]); ]);
$criteria->filters()->add($filterCollectionColor); $criteria->getFilters()->add($filterCollectionColor);
$q = new SearchQuery($criteria); $q = new SearchQuery($criteria);
...@@ -482,38 +482,38 @@ class QueryAndPostFilterTest extends AbstractTestCase ...@@ -482,38 +482,38 @@ class QueryAndPostFilterTest extends AbstractTestCase
$filterCollectionBrand = new FilterGroupCollection([ $filterCollectionBrand = new FilterGroupCollection([
new Filter( new Filter(
new Field('brand'), new Field('brand'),
new FilterOperator(FilterOperator::EQ), FilterOperator::EQ,
new FilterKeyword('nike') new FilterKeyword('nike')
), ),
new Filter( new Filter(
new Field('brand'), new Field('brand'),
new FilterOperator(FilterOperator::EQ), FilterOperator::EQ,
new FilterKeyword('rebook') new FilterKeyword('rebook')
), ),
]); ]);
$filterCollectionBrand $filterCollectionBrand
->setLogicalType(LogicOperator::or()) ->setLogicOperator(LogicOperator::OR)
->setFilterType(FilterType::query()); ->setFilterType(FilterType::QUERY);
$criteria->filters()->add($filterCollectionBrand); $criteria->getFilters()->add($filterCollectionBrand);
$filterCollectionColor = new FilterGroupCollection([ $filterCollectionColor = new FilterGroupCollection([
new Filter( new Filter(
new Field('color'), new Field('color'),
new FilterOperator(FilterOperator::EQ), FilterOperator::EQ,
new FilterKeyword('white') new FilterKeyword('white')
), ),
]); ]);
$filterCollectionColor->setFilterType(FilterType::query()); $filterCollectionColor->setFilterType(FilterType::QUERY);
$criteria->filters()->add($filterCollectionColor); $criteria->getFilters()->add($filterCollectionColor);
$filterCollectionBrand = new FilterGroupCollection([ $filterCollectionBrand = new FilterGroupCollection([
new Filter( new Filter(
new Field('brand'), new Field('brand'),
new FilterOperator(FilterOperator::EQ), FilterOperator::EQ,
new FilterKeyword('nike') new FilterKeyword('nike')
), ),
]); ]);
$criteria->filters()->add($filterCollectionBrand); $criteria->getFilters()->add($filterCollectionBrand);
$q = new SearchQuery($criteria); $q = new SearchQuery($criteria);
...@@ -625,39 +625,38 @@ class QueryAndPostFilterTest extends AbstractTestCase ...@@ -625,39 +625,38 @@ class QueryAndPostFilterTest extends AbstractTestCase
$filterCollectionBrand = new FilterGroupCollection([ $filterCollectionBrand = new FilterGroupCollection([
new Filter( new Filter(
new Field('brand'), new Field('brand'),
new FilterOperator(FilterOperator::EQ), FilterOperator::EQ,
new FilterKeyword('nike') new FilterKeyword('nike')
), ),
new Filter( new Filter(
new Field('brand'), new Field('brand'),
new FilterOperator(FilterOperator::EQ), FilterOperator::EQ,
new FilterKeyword('rebook') new FilterKeyword('rebook')
), ),
]); ]);
$filterCollectionBrand $filterCollectionBrand
->setLogicalType(LogicOperator::or()) ->setLogicOperator(LogicOperator::OR)
->setFilterType(FilterType::query()); ->setFilterType(FilterType::QUERY);
$criteria->filters()->add($filterCollectionBrand); $criteria->getFilters()->add($filterCollectionBrand);
$filterCollectionBrand = new FilterGroupCollection([ $filterCollectionBrand = new FilterGroupCollection([
new Filter( new Filter(
new Field('brand'), new Field('brand'),
new FilterOperator(FilterOperator::EQ), FilterOperator::EQ,
new FilterKeyword('nike') new FilterKeyword('nike')
), ),
]); ]);
$criteria->filters()->add($filterCollectionBrand); $criteria->getFilters()->add($filterCollectionBrand);
$filterCollectionColor = new FilterGroupCollection([ $filterCollectionColor = new FilterGroupCollection([
new Filter( new Filter(
new Field('color'), new Field('color'),
new FilterOperator(FilterOperator::EQ), FilterOperator::EQ,
new FilterKeyword('red') new FilterKeyword('red')
), ),
]); ]);
$criteria->filters()->add($filterCollectionColor); $criteria->getFilters()->add($filterCollectionColor);
$q = new SearchQuery($criteria); $q = new SearchQuery($criteria);
$handler = SearchClient::getInstance(); $handler = SearchClient::getInstance();
...@@ -798,12 +797,12 @@ class QueryAndPostFilterTest extends AbstractTestCase ...@@ -798,12 +797,12 @@ class QueryAndPostFilterTest extends AbstractTestCase
$filterCollectionPrice = new FilterGroupCollection([ $filterCollectionPrice = new FilterGroupCollection([
new Filter( new Filter(
new Field('price'), new Field('price'),
new FilterOperator(FilterOperator::GTE), FilterOperator::GTE,
new FilterNumber(108) new FilterNumber(108)
) )
]); ]);
$filterCollectionPrice->setFilterType(FilterType::query()); $filterCollectionPrice->setFilterType(FilterType::QUERY);
$criteria->filters()->add($filterCollectionPrice); $criteria->getFilters()->add($filterCollectionPrice);
$q = new SearchQuery($criteria); $q = new SearchQuery($criteria);
...@@ -829,12 +828,12 @@ class QueryAndPostFilterTest extends AbstractTestCase ...@@ -829,12 +828,12 @@ class QueryAndPostFilterTest extends AbstractTestCase
$filterCollectionPrice = new FilterGroupCollection([ $filterCollectionPrice = new FilterGroupCollection([
new Filter( new Filter(
new Field('price'), new Field('price'),
new FilterOperator(FilterOperator::GTE), FilterOperator::GTE,
new FilterNumber(105) new FilterNumber(105)
) )
]); ]);
$filterCollectionPrice->setFilterType(FilterType::query()); $filterCollectionPrice->setFilterType(FilterType::QUERY);
$criteria->filters()->add($filterCollectionPrice); $criteria->getFilters()->add($filterCollectionPrice);
$q = new SearchQuery($criteria); $q = new SearchQuery($criteria);
...@@ -948,17 +947,17 @@ class QueryAndPostFilterTest extends AbstractTestCase ...@@ -948,17 +947,17 @@ class QueryAndPostFilterTest extends AbstractTestCase
$filterCollection = new FilterGroupCollection([ $filterCollection = new FilterGroupCollection([
new Filter( new Filter(
new Field('price'), new Field('price'),
new FilterOperator(FilterOperator::GTE), FilterOperator::GTE,
new FilterNumber(104) new FilterNumber(104)
), ),
new Filter( new Filter(
new Field('brand'), new Field('brand'),
new FilterOperator(FilterOperator::EQ), FilterOperator::EQ,
new FilterKeyword('nike') new FilterKeyword('nike')
), ),
]); ]);
$filterCollection->setFilterType(FilterType::query()); $filterCollection->setFilterType(FilterType::QUERY);
$criteria->filters()->add($filterCollection); $criteria->getFilters()->add($filterCollection);
$q = new SearchQuery($criteria); $q = new SearchQuery($criteria);
$handler = SearchClient::getInstance(); $handler = SearchClient::getInstance();
...@@ -1070,26 +1069,26 @@ class QueryAndPostFilterTest extends AbstractTestCase ...@@ -1070,26 +1069,26 @@ class QueryAndPostFilterTest extends AbstractTestCase
$filterCollection = new FilterGroupCollection([ $filterCollection = new FilterGroupCollection([
new Filter( new Filter(
new Field('price'), new Field('price'),
new FilterOperator(FilterOperator::GTE), FilterOperator::GTE,
new FilterNumber(104) new FilterNumber(104)
), ),
new Filter( new Filter(
new Field('brand'), new Field('brand'),
new FilterOperator(FilterOperator::EQ), FilterOperator::EQ,
new FilterKeyword('nike') new FilterKeyword('nike')
), ),
]); ]);
$filterCollection->setFilterType(FilterType::query()); $filterCollection->setFilterType(FilterType::QUERY);
$criteria->filters()->add($filterCollection); $criteria->getFilters()->add($filterCollection);
$filterCollectionColor = new FilterGroupCollection([ $filterCollectionColor = new FilterGroupCollection([
new Filter( new Filter(
new Field('color'), new Field('color'),
new FilterOperator(FilterOperator::EQ), FilterOperator::EQ,
new FilterKeyword('red') new FilterKeyword('red')
), ),
]); ]);
$criteria->filters()->add($filterCollectionColor); $criteria->getFilters()->add($filterCollectionColor);
$q = new SearchQuery($criteria); $q = new SearchQuery($criteria);
$handler = SearchClient::getInstance(); $handler = SearchClient::getInstance();
...@@ -1200,48 +1199,48 @@ class QueryAndPostFilterTest extends AbstractTestCase ...@@ -1200,48 +1199,48 @@ class QueryAndPostFilterTest extends AbstractTestCase
$filterCollectionPrice = new FilterGroupCollection([ $filterCollectionPrice = new FilterGroupCollection([
new Filter( new Filter(
new Field('price'), new Field('price'),
new FilterOperator(FilterOperator::LTE), FilterOperator::LTE,
new FilterNumber(104) new FilterNumber(104)
), ),
]); ]);
$filterCollectionPrice->setFilterType(FilterType::query()); $filterCollectionPrice->setFilterType(FilterType::QUERY);
$criteria->filters()->add($filterCollectionPrice); $criteria->getFilters()->add($filterCollectionPrice);
$filterCollectionBrand = new FilterGroupCollection([ $filterCollectionBrand = new FilterGroupCollection([
new Filter( new Filter(
new Field('brand'), new Field('brand'),
new FilterOperator(FilterOperator::EQ), FilterOperator::EQ,
new FilterKeyword('nike') new FilterKeyword('nike')
), ),
new Filter( new Filter(
new Field('brand'), new Field('brand'),
new FilterOperator(FilterOperator::EQ), FilterOperator::EQ,
new FilterKeyword('adidas') new FilterKeyword('adidas')
), ),
]); ]);
$filterCollectionBrand $filterCollectionBrand
->setLogicalType(LogicOperator::or()) ->setLogicOperator(LogicOperator::OR)
->setFilterType(FilterType::query()); ->setFilterType(FilterType::QUERY);
$criteria->filters()->add($filterCollectionBrand); $criteria->getFilters()->add($filterCollectionBrand);
$filterCollectionColor = new FilterGroupCollection([ $filterCollectionColor = new FilterGroupCollection([
new Filter( new Filter(
new Field('color'), new Field('color'),
new FilterOperator(FilterOperator::EQ), FilterOperator::EQ,
new FilterKeyword('green') new FilterKeyword('green')
), ),
]); ]);
$criteria->filters()->add($filterCollectionColor); $criteria->getFilters()->add($filterCollectionColor);
$filterCollectionBrand = new FilterGroupCollection([ $filterCollectionBrand = new FilterGroupCollection([
new Filter( new Filter(
new Field('brand'), new Field('brand'),
new FilterOperator(FilterOperator::EQ), FilterOperator::EQ,
new FilterKeyword('nike') new FilterKeyword('nike')
), ),
]); ]);
$criteria->filters()->add($filterCollectionBrand); $criteria->getFilters()->add($filterCollectionBrand);
$q = new SearchQuery($criteria); $q = new SearchQuery($criteria);
...@@ -1371,39 +1370,39 @@ class QueryAndPostFilterTest extends AbstractTestCase ...@@ -1371,39 +1370,39 @@ class QueryAndPostFilterTest extends AbstractTestCase
$filterCollectionPrice = new FilterGroupCollection([ $filterCollectionPrice = new FilterGroupCollection([
new Filter( new Filter(
new Field('price'), new Field('price'),
new FilterOperator(FilterOperator::LTE), FilterOperator::LTE,
new FilterNumber(104) new FilterNumber(104)
), ),
]); ]);
$filterCollectionPrice->setFilterType(FilterType::query()); $filterCollectionPrice->setFilterType(FilterType::QUERY);
$criteria->filters()->add($filterCollectionPrice); $criteria->getFilters()->add($filterCollectionPrice);
$filterCollectionBrand = new FilterGroupCollection([ $filterCollectionBrand = new FilterGroupCollection([
new Filter( new Filter(
new Field('brand'), new Field('brand'),
new FilterOperator(FilterOperator::EQ), FilterOperator::EQ,
new FilterKeyword('nike') new FilterKeyword('nike')
), ),
new Filter( new Filter(
new Field('brand'), new Field('brand'),
new FilterOperator(FilterOperator::EQ), FilterOperator::EQ,
new FilterKeyword('adidas') new FilterKeyword('adidas')
), ),
]); ]);
$filterCollectionBrand $filterCollectionBrand
->setLogicalType(LogicOperator::or()) ->setLogicOperator(LogicOperator::OR)
->setFilterType(FilterType::query()); ->setFilterType(FilterType::QUERY);
$criteria->filters()->add($filterCollectionBrand); $criteria->getFilters()->add($filterCollectionBrand);
$filterCollectionPrice = new FilterGroupCollection([ $filterCollectionPrice = new FilterGroupCollection([
new Filter( new Filter(
new Field('price'), new Field('price'),
new FilterOperator(FilterOperator::GTE), FilterOperator::GTE,
new FilterNumber(102) new FilterNumber(102)
), ),
]); ]);
$criteria->filters()->add($filterCollectionPrice); $criteria->getFilters()->add($filterCollectionPrice);
$q = new SearchQuery($criteria); $q = new SearchQuery($criteria);
...@@ -1534,48 +1533,48 @@ class QueryAndPostFilterTest extends AbstractTestCase ...@@ -1534,48 +1533,48 @@ class QueryAndPostFilterTest extends AbstractTestCase
$filterCollectionPrice = new FilterGroupCollection([ $filterCollectionPrice = new FilterGroupCollection([
new Filter( new Filter(
new Field('price'), new Field('price'),
new FilterOperator(FilterOperator::LTE), FilterOperator::LTE,
new FilterNumber(104) new FilterNumber(104)
), ),
]); ]);
$filterCollectionPrice->setFilterType(FilterType::query()); $filterCollectionPrice->setFilterType(FilterType::QUERY);
$criteria->filters()->add($filterCollectionPrice); $criteria->getFilters()->add($filterCollectionPrice);
$filterCollectionBrand = new FilterGroupCollection([ $filterCollectionBrand = new FilterGroupCollection([
new Filter( new Filter(
new Field('brand'), new Field('brand'),
new FilterOperator(FilterOperator::EQ), FilterOperator::EQ,
new FilterKeyword('nike') new FilterKeyword('nike')
), ),
new Filter( new Filter(
new Field('brand'), new Field('brand'),
new FilterOperator(FilterOperator::EQ), FilterOperator::EQ,
new FilterKeyword('adidas') new FilterKeyword('adidas')
), ),
]); ]);
$filterCollectionBrand $filterCollectionBrand
->setLogicalType(LogicOperator::or()) ->setLogicOperator(LogicOperator::OR)
->setFilterType(FilterType::query()); ->setFilterType(FilterType::QUERY);
$criteria->filters()->add($filterCollectionBrand); $criteria->getFilters()->add($filterCollectionBrand);
$filterCollectionPrice = new FilterGroupCollection([ $filterCollectionPrice = new FilterGroupCollection([
new Filter( new Filter(
new Field('price'), new Field('price'),
new FilterOperator(FilterOperator::GTE), FilterOperator::GTE,
new FilterNumber(101) new FilterNumber(101)
), ),
]); ]);
$criteria->filters()->add($filterCollectionPrice); $criteria->getFilters()->add($filterCollectionPrice);
$filterCollectionColor = new FilterGroupCollection([ $filterCollectionColor = new FilterGroupCollection([
new Filter( new Filter(
new Field('color'), new Field('color'),
new FilterOperator(FilterOperator::EQ), FilterOperator::EQ,
new FilterKeyword('green') new FilterKeyword('green')
), ),
]); ]);
$criteria->filters()->add($filterCollectionColor); $criteria->getFilters()->add($filterCollectionColor);
$q = new SearchQuery($criteria); $q = new SearchQuery($criteria);
......