Upgrade Information
Upgrade to 2026.1.0
PHP and Dependency Requirements
- Added support for
PHP8.5. - Removed support for
PHP8.3and Symfonyv6.
Removed ExtJS / Admin Classic
PimcoreGenericDataIndexBundleno longer implementsPimcoreBundleAdminClassicInterface.- Removed
BundleAdminClassicTrait.
Interface Changes
- Added optional
bool $forceReload = falseparameter to thebyId()method on the following interfaces:AssetSearchServiceInterface::byId(int $id, ?User $user = null, bool $forceReload = false)DataObjectSearchServiceInterface::byId(int $id, ?User $user = null, bool $forceReload = false)DocumentSearchServiceInterface::byId(int $id, ?User $user = null, bool $forceReload = false)ElementSearchServiceInterface::byId(ElementType $elementType, int $id, ?User $user = null, bool $forceReload = false)
- [Indexing] BC Break:
IndexQueueRepository::generateSelectQuery()signature changed. The method now accepts an associative$columnAliasesarray (alias => expression) instead of the previous positional$fieldsarray with a separate$idFieldparameter. Passing a numerically-indexed array will throw anInvalidArgumentException. All enqueue methods inEnqueueServiceand the element type adapters (AssetTypeAdapter,DocumentTypeAdapter,DataObjectTypeAdapter) have been updated accordingly. ThequoteParameters()helper method has been removed.
Installer / Messenger Transport Changes
- The bundle installer now implements
PostInstallCommandsProviderInterface. The post-install commandgeneric-data-index:update:index -ris automatically executed duringpimcore:installwhen using Install Profiles. Manual execution afterpimcore:bundle:installis still required. - The messenger transport DSN is now configurable via the
%pimcore.messenger.transport_dsn_prefix%container parameter (env:PIMCORE_MESSENGER_TRANSPORT_DSN_PREFIX) instead of being hardcoded todoctrine://default.
Upgrade to 2.5.4
- [Searching] The full-text search (
FullTextSearchmodifier) now defaults todefault_operator: ANDandflags: PHRASE|WHITESPACEfor better relevance and to treat characters like-and.as literal text.
Upgrade to 2.5.3
- [Indexing] Added
isReferencedfield to asset index to support filtering for unreferenced assets. - [Indexing] Fixed: Unpublished data objects are now correctly indexed in relation fields (ManyToOne, ManyToMany, AdvancedManyToMany)
Re-indexing required
After upgrading, execute the following command to re-index elements to include all modifications:
bin/console generic-data-index:update:index -r
Upgrade to 2.2.0
- [Indexing] Added
idcolumn as new primary key togeneric_data_index_queue. Run migrations after updating. - [Searching] Added
trackTotalHitsparameter toDefaultSearchServiceandSearchExecutionService. Default value:true(always compute accurate total hits, even beyond the search engine's threshold). Set tonullto use the engine's default threshold, or pass an integer for a specific limit.
Upgrade to 2.1.0
- Added support for Symfony 7
- [Indexing] Added sort index for documents
- [Indexing] Improved field collection indexing to prevent mapping conflicts when properties share a name but differ in type
- Reindex all elements to use the new features:
bin/console generic-data-index:update:index -r
Upgrade to 2.0.0
- [Indexing] Added inherited fields indicator to data object indexing
- [Indexing] Added functionality to enqueue dependent items
- [Indexing] Added class ID field for data object elements
- [Indexing] Index name prefix changed from e.g.
pimcore_cartopimcore_data-object_car. Old indices are not deleted automatically - delete them manually if necessary. - [Searching] Added
ClassIdsFiltermodifier to filter data objects by class ID or class name - Added
isElementLocked()toElementLockServicefor retrieving element lock status from the index - Reindex all elements to use the new features:
bin/console generic-data-index:update:index -r
Breaking Changes
- Removed deprecated alias
generic-data-index.opensearch-client. Usegeneric-data-index.search-clientinstead. - Replaced all deprecated OpenSearch namespace classes with DefaultSearch equivalents:
Pimcore\...\Model\OpenSearch→Pimcore\...\Model\DefaultSearchPimcore\...\Enum\SearchIndex\OpenSearch→Pimcore\...\Enum\SearchIndex\DefaultSearch
- Removed deprecated class
Pimcore\...\Exception\OpenSearch\SearchFailedException. UsePimcore\...\Exception\DefaultSearch\SearchFailedExceptioninstead. - Removed deprecated class
AsSearchModifierHandlerfrom OpenSearch namespace. UsePimcore\...\Attribute\Search\AsSearchModifierHandlerinstead. - Removed deprecated
AbstractAdapterclasses from OpenSearch namespace. UsePimcore\...\SearchIndexAdapter\DefaultSearch\...\AbstractAdapterinstead. - Added default
data-object_prefix to all data object class definition index names to avoid conflicts with other index names. - Added element type parameter to
getIdsmethod ofElementSearchResult. - Added
getSpecialPermissionsmethod toElementPermissionServiceInterfacefor workspace language permissions. - Removed layout permission from
DataObjectPermissions(not index-relevant). - Removed
isLockedproperty from index elements (now dynamically calculated). - Changed workspace permissions evaluation to align with Admin Classic permission system.
Interface Changes
- Added
PermissionTypes $permissionTypeparameter (default:PermissionTypes::LIST) to:AssetSearchServiceInterface::searchDocumentSearchServiceInterface::searchDataObjectSearchServiceInterface::searchElementSearchServiceInterface::search
- Search service
byIdmethods now return elements based onPermissionTypes::VIEW - Added type-specific interfaces:
AssetSearch→AssetSearchInterfaceDocumentSearch→DocumentSearchInterfaceElementSearch→ElementSearchInterface
- Search services now require type-specific search objects:
AssetSearchServiceInterface::searchrequiresAssetSearchInterfaceDocumentSearchServiceInterface::searchrequiresDocumentSearchInterfaceElementSearchServiceInterface::searchrequiresElementSearchInterface
SearchProviderInterfacenow returns type-specific search interfaces.
Upgrade to 1.3.0
- [Indexing] Added Elasticsearch support alongside OpenSearch (OpenSearch remains the default). To use Elasticsearch, update your Symfony configuration:
pimcore_generic_data_index:
index_service:
client_params:
client_name: default
client_type: 'elasticsearch'
- [Indexing] Introduced service alias
generic-data-index.search-client, replacing the deprecatedgeneric-data-index.opensearch-client(removed in 2.0). The alias provides aPimcore\SearchClient\SearchClientInterfaceinstance compatible with both OpenSearch and Elasticsearch. - OpenSearch namespace classes are deprecated. Use DefaultSearch namespace instead.
- Reindex all elements after upgrading or switching search engines:
bin/console generic-data-index:update:index
Upgrade to 1.1.0
- Reindex all elements to use the new features:
bin/console generic-data-index:update:index