elasticsuite
elasticsuite copied to clipboard
Virtual Category Rule -> getCategorySearchQuery
main.ERROR: {"error":{"root_cause":[{"type":"parsing_exception","reason":"No value specified for terms query","line":1,"col":252}],"type":"x_content_parse_exception","reason":"[1:252] [bool] failed to parse field [must]","caused_by":{"type":"parsing_exception","reason":"No value specified for terms query","line":1,"col":252}},"status":400} [] []
Preconditions
Error occurs in Administration on category edit page. When category is disabled on store 0 but enabled in other stores. This error will occour when viewing page of category edit when scope is all store views.
Magento Version : 2.3.5-p2 CE
ElasticSuite Version : virtual category 2.9.0
Environment : all environments
Third party modules : none connected to this
- setup with categories
- set categories is_active = false on store 0
- set categories is_active = true on store > 0
Expected result
- no error occurs
Actual result
- Error occurs
have a look at : https://github.com/Smile-SA/elasticsuite/blob/a7b14f0ad249572dfbecbde3faa1d127885eecd0/src/module-elasticsuite-virtual-category/Model/Rule.php#L152 there no query will be returned because category is_active == false
https://github.com/Smile-SA/elasticsuite/blob/a7b14f0ad249572dfbecbde3faa1d127885eecd0/src/module-elasticsuite-catalog/Plugin/Ui/Category/Form/DataProviderPlugin.php#L243
will add this empty query and so cause the error.
[query:protected] => Smile\ElasticsuiteCore\Search\Request\Query\Filtered Object
(
[name:Smile\ElasticsuiteCore\Search\Request\Query\Filtered:private] =>
[boost:Smile\ElasticsuiteCore\Search\Request\Query\Filtered:private] => 1
[filter:Smile\ElasticsuiteCore\Search\Request\Query\Filtered:private] => Smile\ElasticsuiteCore\Search\Request\Query\Boolean Object
(
[name:Smile\ElasticsuiteCore\Search\Request\Query\Boolean:private] =>
[boost:Smile\ElasticsuiteCore\Search\Request\Query\Boolean:private] => 1
[must:Smile\ElasticsuiteCore\Search\Request\Query\Boolean:private] => Array
(
[0] => Smile\ElasticsuiteCore\Search\Request\Query\Term Object
(
[name:Smile\ElasticsuiteCore\Search\Request\Query\Term:private] =>
[boost:Smile\ElasticsuiteCore\Search\Request\Query\Term:private] => 1
[value:Smile\ElasticsuiteCore\Search\Request\Query\Term:private] => 1
[field:Smile\ElasticsuiteCore\Search\Request\Query\Term:private] => stock.is_in_stock
)
[1] => Smile\ElasticsuiteCore\Search\Request\Query\Terms Object
(
[name:Smile\ElasticsuiteCore\Search\Request\Query\Term:private] =>
[boost:Smile\ElasticsuiteCore\Search\Request\Query\Term:private] => 1
[value:Smile\ElasticsuiteCore\Search\Request\Query\Term:private] => Array
(
[0] => 2
[1] => 4
)
[field:Smile\ElasticsuiteCore\Search\Request\Query\Term:private] => visibility
)
[2] => Smile\ElasticsuiteCore\Search\Request\Query\Nested Object
(
[scoreMode:Smile\ElasticsuiteCore\Search\Request\Query\Nested:private] => none
[name:Smile\ElasticsuiteCore\Search\Request\Query\Nested:private] =>
[boost:Smile\ElasticsuiteCore\Search\Request\Query\Nested:private] => 1
[path:Smile\ElasticsuiteCore\Search\Request\Query\Nested:private] => category
[query:Smile\ElasticsuiteCore\Search\Request\Query\Nested:private] => Smile\ElasticsuiteCore\Search\Request\Query\Terms Object
(
[name:Smile\ElasticsuiteCore\Search\Request\Query\Term:private] =>
[boost:Smile\ElasticsuiteCore\Search\Request\Query\Term:private] => 1
[value:Smile\ElasticsuiteCore\Search\Request\Query\Term:private] => Array
(
[0] =>
)
[field:Smile\ElasticsuiteCore\Search\Request\Query\Term:private] => category.category_id
)
)
)
[should:Smile\ElasticsuiteCore\Search\Request\Query\Boolean:private] => Array
(
)
[mustNot:Smile\ElasticsuiteCore\Search\Request\Query\Boolean:private] => Array
(
)
[minimumShouldMatch:Smile\ElasticsuiteCore\Search\Request\Query\Boolean:private] => 1
[cached:Smile\ElasticsuiteCore\Search\Request\Query\Boolean:private] =>
)
[query:Smile\ElasticsuiteCore\Search\Request\Query\Filtered:private] =>
)
This issue still occurs on when
- Magento v2.4.6-p4
- ElasticSuite v2.11.6
- OpenSearch v2.11.0