diff --git a/src/ElasticSearch/Converter/CriteriaToEsRequest.php b/src/ElasticSearch/Converter/CriteriaToEsRequest.php index c14c426ddc098a83183adf5ccdd6a04cf8351c11..b5b50c6bda91dced8755b13de2db8e5ecc5c3dad 100644 --- a/src/ElasticSearch/Converter/CriteriaToEsRequest.php +++ b/src/ElasticSearch/Converter/CriteriaToEsRequest.php @@ -206,6 +206,10 @@ final class CriteriaToEsRequest $keywordFilter = new Query(); foreach ($criteria->filters() as $filterGroup) { /** @var FilterGroupCollection $filterGroup */ + if ($filterGroup->isEmpty()) { + continue; + } + $should = $filterGroup->getLogicalType()->value() === LogicOperator::OR; foreach ($filterGroup as $filter) { /** @var Filter $filter */ $value = $filter->value()->value(); @@ -237,7 +241,11 @@ final class CriteriaToEsRequest $value = (string)$value; } - $keywordFilter->filter(new FilterKeywordFacet($field, $value)); + if ($should) { + $keywordFilter->should(new FilterKeywordFacet($field, $value)); + } else { + $keywordFilter->filter(new FilterKeywordFacet($field, $value)); + } } } diff --git a/src/ElasticSearch/Search/BoolQuery/Query.php b/src/ElasticSearch/Search/BoolQuery/Query.php index 7a235b15736d7bf54cf1003963ce9cec4066ff57..2e35ab00ea61a3a8f61bd1d53b459208c71eb571 100644 --- a/src/ElasticSearch/Search/BoolQuery/Query.php +++ b/src/ElasticSearch/Search/BoolQuery/Query.php @@ -113,6 +113,7 @@ final class Query implements Esable if (false === $this->should->isEmpty()) { $bool['should'] = $this->should->es(); + $bool['minimum_should_match'] = 1; } if (false === $this->match->isEmpty()) {