Releases: Smile-SA/elasticsuite
2.11.16
🏆 Main features
💎 Language support: Introducing dictionary based stemming
For handling in search the singular and plural form of nouns or conjugated versus infinitive form of verbs, Elasticsuite relies on the Elasticsearch/OpenSearch algorithmic stemming feature that support a wide variety of languages, but not all of them.
For languages not supported, we've introducing in this release in Elasticsuite Premium the ability to use Elasticsearch's / OpenSearch's dictionary based stemming feature that relies on Hunspell dictionaries used by a wide variety of spellcheckers.
This can be configured at the Store scope in Stores > Configuration > Elasticsuite > Analyzers Settings > Dictionary based stemming.
💎 Search: Detect and transform unit symbols in quantity/size expressions to preserve the meaning
By default, when indexing content and searching, most of special (non alphanumerical) characters are removed at the beginning of the text analysis and those remaining are then used to delimit/break words and finally removed.
This can be problematic if your catalog data relies heavily on units of measure and/or if your users use their symbol when searching (like " for inches or ' for feet): out of the box, there is no difference in search between 3" screws and 3' screws.
This release introduces in Elasticsuite Premium a mechanism that allows you to define "unit detection rules" rules that will replace a unit of measure symbol or shorthand notation by its full name both at indexing and search time, preserving the sense of the original expression.
For instance, if you associate the character/sequences of character ", in and in. to inches, the expressions 3" and 3in and 3in. will all be transformed to 3 inches at indexing and search time.
The new settings located in Stores > Configuration > Elasticsuite > Analyzers Settings > Unit detection configuration offer a wide coverage of use cases (location of the symbol before or after the quantity, whether the unit name replacing the symbol should be put before or after the quantity, etc).
Autocomplete & 💎 InstantSearch : Ability to force taking categories/products manual/edited URL rewrites into account
By default, for the categories autocomplete, Elasticsuite will rely on the fact that redirect (301) URLs will always be generated when the url_key of a category changes.
Unfortunately, if you manually edit the URL rewrite of a category in admin (Marketing > SEO & Search > URL Rewrites), or if you use a third party module that generates them according to specific rules without putting in place redirect (301) URLs, you could end up with a category being shown in the autocomplete results with a link leading to a 404 page.
The same applies on Elasticsuite Premium for products in addition to categories.
We've decided to introduce settings in Stores > Configuration > Elasticsuite > Catalog Search > Explicit URL rewrites support that can force Elasticsuite to look into the URL rewrites table at indexing :
- Enabled for categories : which is set to Yes by default, since the overhead of looking for categories URL rewrites should be negligible to minimal
- 💎 Enabled for products : (available on Elasticsuite Premium) which is set to No by default since the overhead can be noticeable depending on your catalog size and the number of stores you have.
Please be aware that at this time, there is no automated mechanism that flags a category or a product for being re-indexed in the search engine when an URL rewrite that targets it is changed.
Thesaurus: ability to apply the synonyms rules without regard to singular/plural forms of words
A known limitation about the thesaurus feature is that synonyms and expansions rules are triggered only when the word searched by a user is present exactly as is in the rules.
For instance
- searching for "stories" would not trigger a "story,tale" synonym rule
- searching for "sports" would not trigger a "sport => football,tennis,soccer,running" expansion rule
The common way to deal with that is to include the extra singular/plural form of words in the rule, for instance
- changing the synonym rule from "story,tale" to "story,stories,tale,tales"
- changing the expansion rule from "sport => football,tennis,soccer,running" to "sport,sports => football,tennis,soccer,running"
This can be avoided starting from this release by switching to Yes the new setting in Stores > Configuration > Elasticsuite > Thesaurus (global settings) > Enable stemming on synonym and expansion rules.
It is not enabled by default because we already know of some limitations
- ignoring the singular/plural aspect of words will not work for multi-word synonym rules (e.g. "red dragon,blue vampire")
- in some languages, it can happen that "double stemming" occurs, losing some precision in alternative queries
- in french "chaises" ("chair") will be stemmed into "chais" at the thesaurus time and possibly "chai" (stem for "cellar") at search time
But do not hesitate to try the feature and give us some much welcomed feedback.
📦 Features
- 💎 [Analysis] Detect quantity/size with units by @rbayet
- 💎 [Analysis] Preserve some special chars by @PierreGauthier
- 💎 [AdvancedAnalysis] Introduce Dictionary based stemming by @rbayet
- 💎 [AB Campaign] Add the number of uses and number of results of search term in the campaign optimizer form by @rbayet
- [Catalog] Accessibility adjustments by @saltomorales in #3688
- [Catalog] [Autocomplete] Take categories manual/edited URL rewrites into account by @rbayet in #3731
- [Core] Support custom scoring model/similarity at the attribute/field level by @rbayet in #3712
- 💎 [Explain] Document thesaurus stemming use by @rbayet
- 💎 [Explain] Add clarification about the weight in matches. Mentions the scoring model/algorithm. by @rbayet
- [Indices] Analysis: adding token type info by @rbayet in #3735
- 💎 [InstantSearch] Take categories manual/edited URL rewrites into account by @rbayet
- 💎 [InstantSearch] Take products manual/edited URL rewrites into account by @rbayet
- 💎 [Recommender][Healthcheck] Critical healthcheck for the similarity attribute(s) by @rbayet
- [Thesaurus] Allow using stemmed words to match rules by @rbayet in #3708
🧰 Technical
- [Analysis] Handle uppercase elision by @PierreGauthier in #3729
- 💎 [CascadeSearch] Analysis: add implicit word delimiter parameter by @rbayet
- [Catalog][Autocomplete] Pull category URL suffix from store scope by @rbayet in #3728
- 💎 [Core] Metapackages: clean alphabetical list of modules by @rbayet
- [Core] Prevent firebear/importexport messing up analysis config by @rbayet in #3696
- [Core] Analysis: add implicit word delimiter parameter by @rbayet in #3737
- [Core] Analysis: introducing constant and token filters for special characters handling by @rbayet in #3738
- [Core] Stemmer selection in admin, minor CSS tweak by @rbayet in #3702
- [Core] Fix for upcoming PHP 8.5 deprecation, casting to double is no longer allowed by @hostep in #3732
- 💎 [Hyva][Recommender] Recommender blocks (loader) to the correct location by @rbayet
- 💎 [HyvaCompatibility] CSP: register inline script tags by @rbayet
- [Indices] Escape analysis tokens by @rbayet in #3734
- 💎 [InstantSearch] Pull Category URL suffix from store scope config by @rbayet
- 💎 [InstantSearch] Pull Product URL suffix from store scope config by @rbayet
- [Optimizers/Catalog] UI component: reposition search terms' Uses/Popularity' by @rbayet in #3691
- [Optimizers] Conditions engine useable when Virtual Categories module disabled by @rbayet in #3721
- [Thesaurus] Max number of rewritten queries to 50 by @rbayet in #3711
- [Thesaurus] #3713 Force leniency when creating index by @rbayet in #3716
- [Thesaurus] Disabling by default stemming in thesaurus rules. by @rbayet in #3733
🐛 Fixes
- [CatalogGraphQl] Fixes #3643 functionally (ES searchContext update) properly by @rbayet in #3686
- [Catalog][GraphQL] Fix #3574, add customer group condition for price filtering by @vahonc in #3714
- [GraphQl] Fix Numeric Attributes filter type by @PierreGauthier in #3720
- [Core] Fix #3623, add supporting getMinPrice() and getMaxPrice() as Magento Core functionality...
2.10.31
🏆 Main features
💎 Language support: Introducing dictionary based stemming
For handling in search the singular and plural form of nouns or conjugated versus infinitive form of verbs, Elasticsuite relies on the Elasticsearch/OpenSearch algorithmic stemming feature that support a wide variety of languages, but not all of them.
For languages not supported, we've introducing in this release in Elasticsuite Premium the ability to use Elasticsearch's / OpenSearch's dictionary based stemming feature that relies on Hunspell dictionaries used by a wide variety of spellcheckers.
This can be configured at the Store scope in Stores > Configuration > Elasticsuite > Analyzers Settings > Dictionary based stemming.
💎 Search: Detect and transform unit symbols in quantity/size expressions to preserve the meaning
By default, when indexing content and searching, most of special (non alphanumerical) characters are removed at the beginning of the text analysis and those remaining are then used to delimit/break words and finally removed.
This can be problematic if your catalog data relies heavily on units of measure and/or if your users use their symbol when searching (like " for inches or ' for feet): out of the box, there is no difference in search between 3" screws and 3' screws.
This release introduces in Elasticsuite Premium a mechanism that allows you to define "unit detection rules" rules that will replace a unit of measure symbol or shorthand notation by its full name both at indexing and search time, preserving the sense of the original expression.
For instance, if you associate the character/sequences of character ", in and in. to inches, the expressions 3" and 3in and 3in. will all be transformed to 3 inches at indexing and search time.
The new settings located in Stores > Configuration > Elasticsuite > Analyzers Settings > Unit detection configuration offer a wide coverage of use cases (location of the symbol before or after the quantity, whether the unit name replacing the symbol should be put before or after the quantity, etc).
Autocomplete & 💎 InstantSearch : Ability to force taking categories/products manual/edited URL rewrites into account
By default, for the categories autocomplete, Elasticsuite will rely on the fact that redirect (301) URLs will always be generated when the url_key of a category changes.
Unfortunately, if you manually edit the URL rewrite of a category in admin (Marketing > SEO & Search > URL Rewrites), or if you use a third party module that generates them according to specific rules without putting in place redirect (301) URLs, you could end up with a category being shown in the autocomplete results with a link leading to a 404 page.
The same applies on Elasticsuite Premium for products in addition to categories.
We've decided to introduce settings in Stores > Configuration > Elasticsuite > Catalog Search > Explicit URL rewrites support that can force Elasticsuite to look into the URL rewrites table at indexing :
- Enabled for categories : which is set to Yes by default, since the overhead of looking for categories URL rewrites should be negligible to minimal
- 💎 Enabled for products : (available on Elasticsuite Premium) which is set to No by default since the overhead can be noticeable depending on your catalog size and the number of stores you have.
Please be aware that at this time, there is no automated mechanism that flags a category or a product for being re-indexed in the search engine when an URL rewrite that targets it is changed.
Thesaurus: ability to apply the synonyms rules without regard to singular/plural forms of words
A known limitation about the thesaurus feature is that synonyms and expansions rules are triggered only when the word searched by a user is present exactly as is in the rules.
For instance
- searching for "stories" would not trigger a "story,tale" synonym rule
- searching for "sports" would not trigger a "sport => football,tennis,soccer,running" expansion rule
The common way to deal with that is to include the extra singular/plural form of words in the rule, for instance
- changing the synonym rule from "story,tale" to "story,stories,tale,tales"
- changing the expansion rule from "sport => football,tennis,soccer,running" to "sport,sports => football,tennis,soccer,running"
This can be avoided starting from this release by switching to Yes the new setting in Stores > Configuration > Elasticsuite > Thesaurus (global settings) > Enable stemming on synonym and expansion rules.
It is not enabled by default because we already know of some limitations
- ignoring the singular/plural aspect of words will not work for multi-word synonym rules (e.g. "red dragon,blue vampire")
- in some languages, it can happen that "double stemming" occurs, losing some precision in alternative queries
- in french "chaises" ("chair") will be stemmed into "chais" at the thesaurus time and possibly "chai" (stem for "cellar") at search time
But do not hesitate to try the feature and give us some much welcomed feedback.
📦 Features
- 💎 [Analysis] Detect quantity/size with units by @rbayet
- 💎 [Analysis] Preserve some special chars by @PierreGauthier
- 💎 [AdvancedAnalysis] Introduce Dictionary based stemming by @rbayet
- 💎 [AB Campaign] Add the number of uses and number of results of search term in the campaign optimizer form by @rbayet
- [Catalog] Accessibility adjustments (2.10.x) by @rbayet in #3689
- [Catalog][Autocomplete] Take categories manual/edited URL rewrites into account by @rbayet in #3731
- [Core] Support custom scoring model/similarity at the attribute/field level by @rbayet in #3712
- 💎 [Explain] Document thesaurus stemming use by @rbayet
- 💎 [Explain] Add clarification about the weight in matches. Mentions the scoring model/algorithm. by @rbayet
- [Indices] Analysis: adding token type info by @rbayet in #3735
- 💎 [InstantSearch] Take categories manual/edited URL rewrites into account by @rbayet
- 💎 [InstantSearch] Take products manual/edited URL rewrites into account by @rbayet
- 💎 [Recommender][Healthcheck] Critical healthcheck for the similarity attribute(s) by @rbayet
- [Thesaurus] Allow using stemmed words to match rules by @rbayet in #3708
🧰 Technical
- [Analysis] Handle uppercase elision by @PierreGauthier in #3729
- 💎 [CascadeSearch] Analysis: add implicit word delimiter parameter by @rbayet
- [Catalog][Autocomplete] Pull category URL suffix from store scope by @rbayet in #3728
- 💎 [Core] Metapackages: clean alphabetical list of modules by @rbayet
- [Core] Prevent firebear/importexport messing up analysis config by @rbayet in #3696
- [Core] Analysis: add implicit word delimiter parameter by @rbayet in #3737
- [Core] Analysis: introducing constant and token filters for special characters handling by @rbayet in #3738
- [Core] Stemmer selection in admin, minor CSS tweak by @rbayet in #3702
- 💎 [Hyva][Recommender] Recommender blocks (loader) to the correct location by @rbayet
- 💎 [HyvaCompatibility] CSP: register inline script tags by @rbayet
- [Indices] Escape analysis tokens by @rbayet in #3734
- 💎 [InstantSearch] Pull Category URL suffix from store scope config by @rbayet
- 💎 [InstantSearch] Pull Product URL suffix from store scope config by @rbayet
- [Optimizers/Catalog] UI component: reposition search terms' Uses/Popularity by @rbayet in #3691
- [Optimizers] Conditions engine useable when Virtual Categories module disabled by @rbayet in #3721
- [Thesaurus] Max number of rewritten queries to 50 by @rbayet in #3711
- [Thesaurus] #3713 Force leniency when creating index by @rbayet in #3716
- [Thesaurus] Disabling by default stemming in thesaurus rules. by @rbayet in #3733
🐛 Fixes
- [Catalog][GraphQL] Fix #3574, add customer group condition for price filtering by @vahonc in #3714
- [GraphQl] Fix Numeric Attributes filter type by @PierreGauthier in #3720
- [Core] Fix #3623, add supporting getMinPrice() and getMaxPrice() as Magento Core functionality by @PierreGauthier in #3692
- [Layer] Fix category in search context by @PierreGauthier in #3693
- [Optimizers] Fixes search terms num. results not initially shown after selection by @rbayet in https://github.c...
2.11.15.1
2.10.30.1
2.11.15
🏆 Main features
💎 Virtual categories dashboard
We're introducing a new Elasticsuite Premium composer package named smile/module-elasticsuite-category-monitoring.
It provides a new module Smile_ElasticsuiteCategoryMonitoring whose feature is a new menu entry under "Elasticsuite Categories > Virtual Categories Dashboard".
As its name suggests, it provides a screen listing all your virtual categories with some relevant information, alerts if need be and a direct link to go edit the virtual category.

Along with the decoration of virtual categories with the Elasticsuite logo
in the Catalog > Categories category tree menu also introduced in this release, it is intended to help you quickly locate and evaluate your virtual categories.
Optimizers: Ability to apply them to all but some categories
Historically, for an optimizer applicable to the Catalog Navigation, it was possible to let it be applied
- either to all categories
- or only to some categories
It is now possible to have a boost be applied to all categories except some.

Indexing / Bulk error grid
A new menu entry is available in Elasticsuite > System > Indexing / Bulk Errors.
It leads to a grid that will show you errors that may have occurred at indexing time when sending data in bulk and which can led to documents (products, categories, etc) being rejected and not indexed.
While those errors were already reported to the Magento logs, they will now additionally be visible in the admin so you can more quickly
- identify the rejected documents (categories, products)
- address any issue with a faulty custom data source or a Magento attribute or its data having been incorrectly initialized.
The logging of those errors can be disabled through the setting located at Stores > Configuration > Elasticsuite > Base Settings > Indexing / Bulk errors logging > Enable logging of bulk indexing errors.
Please note that for Magento entity based indices (categories, products) all existing logged errors are purged from the database when a full re-index occurs.
📦 Features
- [Admin] Bulk errors grid by @PierreGauthier in #3654
- [Core] Add ability to read the index name of a document by @rbayet in #3647
- 💎 [Healthchecks] Added healthcheck for Premium client Id by @romainruaud in Elastic-Suite/magento2-elasticsuite-premium#350
- [Healthcheck] Add tracking events healthcheck by @PierreGauthier in #3664
- [Optimizer] Feature #2766 Add ability to apply optimizer to all categories except some by @rbayet in #3656
- 💎 Feature #2766 [elasticsuitepremium] Optimizer apply to categories except some by @rbayet in Elastic-Suite/magento2-elasticsuite-premium#354
- [Optimizers] Show search terms' Uses/Popularity and Number of results by @rbayet in #3678
- 💎 [Recommender] Add option to use only company events by @PierreGauthier in Elastic-Suite/magento2-elasticsuite-premium#355
- [Tracker] Handle base64 encoded numeric identifiers by @rbayet in #3632
- 💎 [Tracker] Data checker for product uid vs id by @rbayet in Elastic-Suite/magento2-elasticsuite-premium#352
- 💎 [Virtual category] Create Dashboard by @PierreGauthier in Elastic-Suite/magento2-elasticsuite-premium#359
- [VirtualCategories][Admin] Show the ES logo near a category name in trees by @rbayet in #3668
💻 Technical
- [Backport] Replacing Zend_Date with native PHP DateTime object/funct… by @PierreGauthier in #3665
- [Core] Refactor the Upsell message by @romainruaud in #3636
- [Core] Anticipate doc type removal in later ES/OS versions by @rbayet in #3674
- [Core] Re-ordering Elasticsuite menus by @rbayet in #3679
- [Core] Quality fixes by @rbayet in #3677
- 💎 [Core][PHP] Fixes #3602 correct casting of null coalesce operator results by @rbayet in Elastic-Suite/magento2-elasticsuite-premium#353
- 💎 [Core] Re-ordering Elasticsuite menus by @rbayet in Elastic-Suite/magento2-elasticsuite-premium#362
- [Healthcheck] Adding i18n to 'anchor' categories check by @rbayet in #3648
- [Healthcheck] Minor i18n issue and cosmetics by @rbayet in #3670
- [Indices] Feature #3652 remove individual index stats calls by @rbayet in #3653
- [Optimizer] Reorder methods post-merge of #2766 by @rbayet in #3673
- 💎 [Recommender][Hyva] Remove native recommender blocks by @rbayet in Elastic-Suite/magento2-elasticsuite-premium#303
- 💎 [Recommender] Alter label for company-based restricted recommendations by @rbayet in Elastic-Suite/magento2-elasticsuite-premium#363
- [SignificantTerm] Add background filter by @PierreGauthier in #3662
- [Tracker][Company] Move company related logic into a helper to make it reusable by @PierreGauthier in #3667
- [Tracker] Refactor behavioral data checkers by @rbayet in #3633
- [Tracker] Support partial behavioral data fixing by @rbayet in #3637
- 💎 [Tracker] Support partial behavioral data fixing by @rbayet in Elastic-Suite/magento2-elasticsuite-premium#351
- [Tracker] Report partial behavioral data fixing by @rbayet in #3638
- [Tracker] Optional progress/reporting oriented interfaces for fixers by @rbayet in #3641
- [Tracker] Optional progress/reporting interfaces more generic by @rbayet in #3649
- [Tracker] Relaxed progress/reporting interfaces prototypes by @rbayet in #3650
- [Tracker] Update referenceContainer for CMS tracker by @rikwillems in #3661
🐛 Fixes
- 💎 [AB Campaign] Discard empty session_id when collecting ab campaign results by @rbayet in Elastic-Suite/magento2-elasticsuite-premium#360
- [Core][PHP] Fixes #3602 correct casting of null coalesce operator results by @rbayet in #3657
- 💎 [Explain] Re-organize call stack for listening to container change and query text by @romainruaud in Elastic-Suite/magento2-elasticsuite-premium#349
- [GraphQl] Fix #3643, inject ArgumentsProcessorInterface into Elasticsuite, replicate Magento Core logic by @vahonc in #3669
- [Healthchecks] Fixed hyva spelling by @dylanmaurits in #3635
- [Tracker] Fixing broken transparent pixel (content) by @rbayet in #3642
- [Analytics][Tracker] Fix lack of company_id and customer_group_id in sessions by @rbayet in #3651
New Contributors
- @dylanmaurits made their first contribution in #3635
- @rikwillems made their first contribution in #3661
Full Changelog (Open Source): 2.11.14...2.11.15
2.10.30
🏆 Main features
💎 Virtual categories dashboard
We're introducing a new Elasticsuite Premium composer package named smile/module-elasticsuite-category-monitoring.
It provides a new module Smile_ElasticsuiteCategoryMonitoring whose feature is a new menu entry under "Elasticsuite Categories > Virtual Categories Dashboard".
As its name suggests, it provides a screen listing all your virtual categories with some relevant information, alerts if need be and a direct link to go edit the virtual category.

Along with the decoration of virtual categories with the Elasticsuite logo
in the Catalog > Categories category tree menu also introduced in this release, it is intended to help you quickly locate and evaluate your virtual categories.
Optimizers: Ability them to all but some categories
Historically, for an optimizer applicable to the Catalog Navigation, it was possible to let it be applied
- either to all categories
- or only to some categories
It is now possible to have a boost be applied to all categories except some.

Indexing / Bulk error grid
A new menu entry is available in Elasticsuite > System > Indexing / Bulk Errors.
It leads to a grid that will show you errors that may have occurred at indexing time when sending data in bulk and which can led to documents (products, categories, etc) being rejected and not indexed.
While those errors were already reported to the Magento logs, they will now additionally be visible in the admin so you can more quickly
- identify the rejected documents (categories, products)
- address any issue with a faulty custom data source or a Magento attribute or its data having been incorrectly initialized.
The logging of those errors can be disabled through the setting located at Stores > Configuration > Elasticsuite > Base Settings > Indexing / Bulk errors logging > Enable logging of bulk indexing errors.
Please note that for Magento entity based indices (categories, products) all existing logged errors are purged from the database when a full re-index occurs.
📦 Features
- [Admin] Bulk errors grid by @PierreGauthier in #3654
- [Core] Add ability to read the index name of a document by @rbayet in #3647
- 💎 [Healthchecks] Added healthcheck for Premium client Id by @romainruaud in Elastic-Suite/magento2-elasticsuite-premium#350
- [Healthcheck] Add tracking events healthcheck by @PierreGauthier in #3664
- [Optimizers] Feature #2766 Add ability to apply optimizer to all categories except some by @rbayet in #3656
- 💎 Feature #2766 [elasticsuitepremium] Optimizer apply to categories except some by @rbayet in Elastic-Suite/magento2-elasticsuite-premium#354
- [Optimizers] Show search terms' Uses/Popularity and Number of results by @rbayet in #3678
- 💎 [Recommender] Add option to use only company events by @PierreGauthier in Elastic-Suite/magento2-elasticsuite-premium#355
- [Tracker] Handle base64 encoded numeric identifiers by @rbayet in #3632
- 💎 [Tracker] Data checker for product uid vs id by @rbayet in Elastic-Suite/magento2-elasticsuite-premium#352
- 💎 [Virtual category] Create Dashboard by @PierreGauthier in Elastic-Suite/magento2-elasticsuite-premium#359
- [VirtualCategories][Admin] Show the ES logo near a category name in trees by @rbayet in #3668
💻 Technical
- [Backport] Replacing Zend_Date with native PHP DateTime object/funct… by @PierreGauthier in #3665
- [Core] Refactor the Upsell message by @romainruaud in #3636
- [Core] Anticipate doc type removal in later ES/OS versions by @rbayet in #3674
- [Core] Re-ordering Elasticsuite menus by @rbayet in #3679
- 💎 [Core][PHP] Fixes #3602 correct casting of null coalesce operator results by @rbayet in Elastic-Suite/magento2-elasticsuite-premium#353
- 💎 [Core] Re-ordering Elasticsuite menus by @rbayet in Elastic-Suite/magento2-elasticsuite-premium#362
- [Healthcheck] Adding i18n to 'anchor' categories check by @rbayet in #3648
- [Healthcheck] Minor i18n issue and cosmetics by @rbayet in #3670
- [Indices] Feature #3652 remove individual index stats calls by @rbayet in #3653
- 💎 [Recommender][Hyva] Remove native recommender blocks by @rbayet in Elastic-Suite/magento2-elasticsuite-premium#303
- 💎 [Recommender] Alter label for company-based restricted recommendations by @rbayet in Elastic-Suite/magento2-elasticsuite-premium#363
- [SignificantTerm] Add background filter by @PierreGauthier in #3662
- [Tracker][Company] Move company related logic into a helper to make it reusable by @PierreGauthier in #3667
- [Tracker] Refactor behavioral data checkers by @rbayet in #3633
- [Tracker] Support partial behavioral data fixing by @rbayet in #3637
- 💎 [Tracker] Support partial behavioral data fixing by @rbayet in Elastic-Suite/magento2-elasticsuite-premium#351
- [Tracker] Report partial behavioral data fixing by @rbayet in #3638
- [Tracker] Optional progress/reporting oriented interfaces for fixers by @rbayet in #3641
- [Tracker] Optional progress/reporting interfaces more generic by @rbayet in #3649
- [Tracker] Relaxed progress/reporting interfaces prototypes by @rbayet in #3650
- [Tracker] Update referenceContainer for CMS tracker (2.10.x) by @rbayet in #3671
🐛 Fixes
- 💎 [AB Campaign] Discard empty session_id when collecting ab campaign results by @rbayet in Elastic-Suite/magento2-elasticsuite-premium#360
- [Core][PHP] Fixes #3602 correct casting of null coalesce operator results by @rbayet in #3657
- 💎 [Explain] Re-organize call stack for listening to container change and query text by @romainruaud in Elastic-Suite/magento2-elasticsuite-premium#349
- [Healthchecks] Fixed hyva spelling by @rbayet in #3640
- [Tracker] Fixing broken transparent pixel (content) by @rbayet in #3642
- [Analytics][Tracker] Fix lack of company_id and customer_group_id in sessions by @rbayet in #3651
Full Changelog (Open-Source): 2.10.29...2.10.30
2.11.14
🏆 Main features
Search Usage dashboard: Ability to copy the list of search terms to the clipboard
In the Analytics > Search Usage dashboard, it is now possible to copy the popular and spellcheck search terms tabular data into your clipboard.

The data can then be pasted into a spreadsheet application: it is in CSV format with the Tab character as separator (so actually, TSV / "Tab Separated Values" instead of CSV / "Comma Separated Values").
Indices grid: Mass remove button in admin and CLI command to remove all ghost indices
It was already possible to remove ghost indices from the Elasticsuite > Indices screen, but one by one, which can be cumbersome if you have a lot of them.
Since we do not offer a cronjob to automatically remove ghost indices, we always recommended the third party module sehrling/elasticsuite-ghost-cleaner that does (and we'll keep doing it !).
But you now have a dedicated button to remove at once all the ghost indices from the Elasticsuite > Indices screen :

We've also added a Magento CLI command to that effect: php bin/magento elasticsuite:indices:purgeghosts.
📦 Features
- [Analytics] #3584 Add ability to copy list of search terms to the clipboard by @vahonc in #3597
- [Analytics][B2B] #3614 Add sorting Company filter options alphabetically by @vahonc in #3620
- [Healthcheck] #3583 Introduce category.is_anchor config check by @vahonc in #3594
- [Indices] #3600 Add a button to remove all ghosts indexes by @vahonc in #3612
- [Indices] #3624 Add a CLI command to remove all ghost indices by @rbayet in #3629
💻 Technical
- [Core] Allow newer versions of opensearch-php client but keep discarding tho… by @romainruaud in #3625
- [Core] Replacing deprecated word_delimiter by word_delimiter_graph by @rbayet in #3605
- [Indices] #3592 #3596 Better performance when getting indices stats by @rbayet in #3610
- [Indices] Shard settings: removing cache usage altogether by @rbayet in #3613
🐛 Fixes
- [Analytics] Fix analytics missing 0 results search terms by @rbayet in #3621
- [Catalog] #3617 Elasticsuite is not indexing url_key in Magento 2.4.8 by @pawel-ledwig in #3617 #3619
- 💎 [Explain] #326 Boost impact/scale function not displayed by @rbayet
New Contributors
- @pawel-ledwig made their first contribution in #3619
Full Changelog: 2.11.13...2.11.14
2.10.29
🏆 Main features
Search Usage dashboard: Ability to copy the list of search terms to the clipboard
In the Analytics > Search Usage dashboard, it is now possible to copy the popular and spellcheck search terms tabular data into your clipboard.

The data can then be pasted into a spreadsheet application: it is in CSV format with the Tab character as separator (so actually, TSV / "Tab Separated Values" instead of CSV / "Comma Separated Values").
Indices grid: Mass remove button in admin and CLI command to remove all ghost indices
It was already possible to remove ghost indices from the Elasticsuite > Indices screen, but one by one, which can be cumbersome if you have a lot of them.
Since we do not offer a cronjob to automatically remove ghost indices, we always recommended the third party module sehrling/elasticsuite-ghost-cleaner that does (and we'll keep doing it !).
But you now have a dedicated button to remove at once all the ghost indices from the Elasticsuite > Indices screen :

We've also added a Magento CLI command to that effect: php bin/magento elasticsuite:indices:purgeghosts.
📦 Features
- [Analytics] #3584 Add ability to copy list of search terms to the clipboard by @vahonc in #3597
- [Analytics][B2B] #3614 Add sorting Company filter options alphabetically by @vahonc in #3620
- [Healthcheck] #3583 Introduce category.is_anchor config check by @vahonc in #3594
- [Indices] #3600 Add a button to remove all ghosts indexes by @vahonc in #3612
- [Indices] #3624 Add a CLI command to remove all ghost indices by @rbayet in #3629
💻 Technical
- [Core] Replacing deprecated word_delimiter by word_delimiter_graph by @rbayet in #3605
- [Indices] #3592 #3596 Better performance when getting indices stats by @rbayet in #3610
- [Indices] Shard settings: removing cache usage altogether by @rbayet in #3613
🐛 Fixes
- [Analytics] Fix analytics missing 0 results search terms by @rbayet in #3621
- 💎 [Explain] #326 Boost impact/scale function not displayed by @rbayet
Full Changelog: 2.10.28...2.10.29
2.11.13
🏆 Main changes
Allowing to use ElasticSuite without MSI being present
MSI support was introduced in Elasticsuite back in 2018 with the release 2.7.0 ensuring compatibility with Magento 2.3.0.
At that time, the legacy Magento inventory system was supposed to be slowly deprecated and removed ✌️ sometime soon ✌️, so Elasticsuite allowed you to bypass MSI to use the legacy inventory system if the MSI modules were present but disabled.
This release now gives you out-of-the-box the ability to use the "still alive and kicking" legacy inventory system without having to patch Elasticsuite if you decide to not have the MSI modules present at all, either by manually removing the associated composer packages requirements or using a composer package that does that for you, like yireo/magento2-replace-inventory.
Supporting PHP 8.4 + Magento 2.4.8
Elasticsuite already supported Magento 2.4.8 if using PHP 8.3.
But this releases introduces the ability to also use Elasticsuite if you decide to run Magento 2.4.8 on PHP 8.4.
💎 Recommender: configurable superior prices limit for Upsell products
The Recommender has a legacy configuration parameter to force upsell products to have a higher price than the product for which they are to be recommended.
A new setting has been introduced Stores > Configuration > Elasticsuite > Recommender > Upsell products > Event-Based specific configuration> Higher price limit for Upsells (base price %) to limit those higher prices withing a certain percentage above the target product price.
For instance, in this configuration, for a product with a price of 20 EUR, only upsell products candidate with a price of at most 30 EUR will be recommended.

📦 Features
- [Catalog] Allow to use ElasticSuite without MSI by @romainruaud in #3577
- [Recommender] 💎 Add greater price limitation configuration for Upsell products by @vahonc
🐛 Technical
- [Compat] Fixes #3578 PHP 8.4 deprecation by @rbayet in #3586
- [Compat] Replacing deprecated PHPUnit setMethods by @rbayet in #3589
- [Compat] Anticipating PHP 8.4 deprecation: Implicitly marking paramet… by @rbayet in #3587
- [Compat] Eliminate future PHPUnit warnings by @rbayet in #3588
Full Changelog: 2.11.12.1...2.11.13
2.10.28
🏆 Main feature
Allowing to use ElasticSuite without MSI being present
MSI support was introduced in Elasticsuite back in 2018 with the release 2.7.0 ensuring compatibility with Magento 2.3.0.
At that time, the legacy Magento inventory system was supposed to be slowly deprecated and removed ✌️ sometime soon ✌️, so Elasticsuite allowed you to bypass MSI to use the legacy inventory system if the MSI modules were present but disabled.
This release now gives you out-of-the-box the ability to use the "still alive and kicking" legacy inventory system without having to patch Elasticsuite if you decide to not have the MSI modules present at all, either by manually removing the associated composer packages requirements or using a composer package that does that for you, like yireo/magento2-replace-inventory.
💎 Recommender: configurable superior prices limit for Upsell products
The Recommender has a legacy configuration parameter to force upsell products to have a higher price than the product for which they are to be recommended.
A new setting has been introduced Stores > Configuration > Elasticsuite > Recommender > Upsell products > Event-Based specific configuration> Higher price limit for Upsells (base price %) to limit those higher prices withing a certain percentage above the target product price.
For instance, in this configuration, for a product with a price of 20 EUR, only upsell products candidate with a price of at most 30 EUR will be recommended.

📦 Features
- [Catalog] Allow to use ElasticSuite without MSI by @romainruaud in #3577
- [Recommender] 💎 Add greater price limitation configuration for Upsell products by @vahonc (already present in 2.10.27)
💻 Technical
- [Compat] Anticipating PHP 8.4 deprecation: Implicitly marking parameter as nullable is deprecated by @rbayet in #3587
- [Compat] Eliminate future PHPUnit warnings by @rbayet in #3588
- [Compat] Replacing deprecated PHPUnit setMethods by @rbayet in #3589
Full Changelog: 2.10.27...2.10.28