From 874f363796340392444f1f5cc58671f683036223 Mon Sep 17 00:00:00 2001 From: Pavel Piligrimov Date: Mon, 24 Apr 2023 14:25:30 +0500 Subject: [PATCH] min should, keyword should filter --- src/ElasticSearch/Converter/CriteriaToEsRequest.php | 10 +++++++++- src/ElasticSearch/Search/BoolQuery/Query.php | 1 + 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/src/ElasticSearch/Converter/CriteriaToEsRequest.php b/src/ElasticSearch/Converter/CriteriaToEsRequest.php index c14c426..b5b50c6 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 7a235b1..2e35ab0 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()) { -- GitLab