diff --git a/docs/content_management/collaborative_editing/collaborative_editing_guide.md b/docs/content_management/collaborative_editing/collaborative_editing_guide.md index 2259b8eaff..379a901dc3 100644 --- a/docs/content_management/collaborative_editing/collaborative_editing_guide.md +++ b/docs/content_management/collaborative_editing/collaborative_editing_guide.md @@ -31,11 +31,6 @@ This allows the user to grant preview access to logged-in users, as well as shar You can share a direct link to the collaborative session using the **Copy link** button. Link is copied to the clipboard and you can share it with the users through communication channels. -!!! caution "Browser Compatibility" - - To use the **Copy link** option, which allows you to copy a link to the clipboard and share it through communication channels with other users, the Clipboard API is required. - As a result, this option may not work in some browsers, such as Safari. - ### Collaboration session Collaborative editing allows to work together on the same content items. diff --git a/docs/getting_started/requirements.md b/docs/getting_started/requirements.md index 670da3ff34..8f9a9d8f15 100644 --- a/docs/getting_started/requirements.md +++ b/docs/getting_started/requirements.md @@ -215,7 +215,7 @@ For production setups it's recommended that you use Varnish/Fastly, Redis, NFS/E |Name|Version| |---|---| |Solr|8.11.1+ or 9.8.1+| - |Elasticsearch| 7.16.2+ | + |Elasticsearch| 7.16.2+ or 8.19+ | If you see a "+" next to the product version, it indicates a recommended version or higher within the same major release. For example, "1.18+" means any 1.x version equal to or higher than 1.18, but not 2.x. @@ -295,7 +295,7 @@ For production setups it's recommended that you use Varnish/Fastly, Redis, NFS/E === "[[= product_name =]] v5.0" - Linux NFS or S3/EFS (for IO, aka binary files stored in content repository, not supported with legacy) - - Redis 7.2+ (separate instances for session and cache, both using a `volatile-*` [eviction policy](https://redis.io/docs/latest/develop/reference/eviction/), session instance configured for persistence) + - Redis 7.2+, 8.4+, or Valkey 9.0+ (separate instances for session and cache, both using a `volatile-*` [eviction policy](https://redis.io/docs/latest/develop/reference/eviction/), session instance configured for persistence) - [Varnish](http://varnish-cache.org/) 6.0LTS or 7.1 with [varnish-modules](https://github.com/varnish/varnish-modules/blob/master/README.md) or [Fastly](https://www.fastly.com/) using [the provided bundle](http_cache.md) (for HTTP Cache) If you see a "+" next to the product version, it indicates a recommended version or higher within the same major release. @@ -304,7 +304,7 @@ For production setups it's recommended that you use Varnish/Fastly, Redis, NFS/E === "[[= product_name =]] v4.6" - Linux NFS or S3/EFS (for IO, aka binary files stored in content repository, not supported with legacy) - - Redis 4.0+, 5.0+, and 7.2+ (separate instances for session and cache, both using a `volatile-*` [eviction policy](https://redis.io/docs/latest/develop/reference/eviction/), session instance configured for persistence) or [Memcached](https://memcached.org/) 1.5 or higher + - Redis 4.0+, 5.0+, 7.2+, 8.4+, or Valkey 9.0+ (separate instances for session and cache, both using a `volatile-*` [eviction policy](https://redis.io/docs/latest/develop/reference/eviction/), session instance configured for persistence), or [Memcached](https://memcached.org/) 1.5 or higher - [Varnish](http://varnish-cache.org/) 6.0LTS or 7.1 with [varnish-modules](https://github.com/varnish/varnish-modules/blob/master/README.md) or [Fastly](https://www.fastly.com/) using [the provided bundle](http_cache.md) (for HTTP Cache) If you see a "+" next to the product version, it indicates a recommended version or higher within the same major release. diff --git a/docs/release_notes/ibexa_dxp_v5.0.md b/docs/release_notes/ibexa_dxp_v5.0.md index 5cfbc33755..7e0f306f4b 100644 --- a/docs/release_notes/ibexa_dxp_v5.0.md +++ b/docs/release_notes/ibexa_dxp_v5.0.md @@ -10,6 +10,57 @@ month_change: false
+[[% set version = 'v5.0.5' %]] + +[[= release_note_entry_begin("Ibexa DXP " + version, '2026-01-15', ['Headless', 'Experience', 'Commerce']) =]] + +### Infrastructure + +#### Added support for Elasticsearch 8 + +Elasticsearch 8 is now officially supported. +If you're currently using Elasticsearch 7, which is [no longer maintained](https://www.elastic.co/support/eol), it's recommended to upgrade. +See the [update instructions](update_from_5.0.md#update-elasticsearch-server) for more information. + +#### Added support for Valkey + +Valkey is now [officially supported](requirements.md) alongside Redis. + +### Developer experience + +#### Easier debugging of Page Builder blocks + +In Symfony's `dev` environment, use the "Open profiler" action to quickly debug Page Builder's block rendering failures. + +![Quickly debug failing Page Builder blocks with "Open profiler" action](img/5.0_open_in_profiler.png "Quickly debug failing Page Builder blocks with 'Open profiler' action") + +#### Improved logging for Ibexa CDP + +You can configure the new `ibexa.cdp.webhook` Monolog channels to direct all CDP webhook logs to specific output for easier separation of logs. + +Example configuration: + +```yaml +when@prod: + monolog: + handlers: + cdp_webhook: + type: stream + path: "%kernel.logs_dir%/cdp_webhook_%kernel.environment%.log" + level: debug + channels: [ 'ibexa.cdp.webhook' ] +``` + +#### Added OpenAPI support for Collaborative editing REST API + +The [Collaborative editing](collaborative_editing.md) REST API endpoints are now included in the [OpenAPI-based REST API reference](/api/rest_api/rest_api_reference/rest_api_reference.html#tag/Collaboration-Sessions). + +### Full changelog + +[[% include 'snippets/release_50.md' %]] + +[[= release_note_entry_end() =]] + [[% set version = 'v5.0.4' %]] [[= release_note_entry_begin("Integrated help " + version, '2025-12-10', ['Headless', 'Experience', 'Commerce', 'LTS Update', 'New feature']) =]] @@ -35,12 +86,12 @@ For more information, see how to [install Anthropic connector](configure_ai_acti [[= release_note_entry_begin("Ibexa DXP " + version, '2025-12-10', ['Headless', 'Experience', 'Commerce', 'New feature']) =]] -#### Security +### Security This release includes security fixes. To learn more, see the [corresponding security advisory](https://developers.ibexa.co/security-advisories/ibexa-sa-2025-005-password-change-and-xss-vulnerabilities-in-back-office). -#### Real-time collaborative editing +### Real-time collaborative editing Real-time editing is now part of the [Collaborative editing](collaborative_editing.md) feature. @@ -53,7 +104,7 @@ This extends the already existing capabilities allowing editors to work on the s For more information, see how to [configure Collaborative editing](configure_collaborative_editing.md). -#### Taxonomy suggestions for faster content classification +### Taxonomy suggestions for faster content classification You can now speed up taxonomy assignment with AI-powered taxonomy suggestions. @@ -65,17 +116,17 @@ This approach reduces manual effort, minimizes errors, and significantly improve For more information, see [Taxonomy suggestions](taxonomy.md#taxonomy-suggestions). -#### Infrastructure +### Infrastructure - MariaDB 11.4 is now [officially supported](requirements.md#dbms) -#### Developer experience +### Developer experience -##### PHP API +#### PHP API The following additions were made to the PHP API: -###### Real-time collaborative editing: +##### Real-time collaborative editing: - [`Ibexa\Contracts\Collaboration\Invitation\Query\Criterion\ParticipantScope`](https://doc.ibexa.co/en/5.0/api/php_api/php_api_reference/classes/Ibexa-Contracts-Collaboration-Invitation-Query-Criterion-ParticipantScope.html) - [`Ibexa\Contracts\Collaboration\Invitation\Query\Criterion\ParticipantType`](https://doc.ibexa.co/en/5.0/api/php_api/php_api_reference/classes/Ibexa-Contracts-Collaboration-Invitation-Query-Criterion-ParticipantType.html) @@ -91,7 +142,7 @@ The following additions were made to the PHP API: - [`Ibexa\Contracts\Share\Mapper\Action\ShareActionItemsMapperInterface`](https://doc.ibexa.co/en/5.0/api/php_api/php_api_reference/classes/Ibexa-Contracts-Share-Mapper-Action-ShareActionItemsMapperInterface.html) -###### AI Taxonomy suggestions: +##### AI Taxonomy suggestions: - [`Ibexa\Contracts\ConnectorAi\Action\DataType\Taxonomy`](https://doc.ibexa.co/en/5.0/api/php_api/php_api_reference/classes/Ibexa-Contracts-ConnectorAi-Action-DataType-Taxonomy.html) - [`Ibexa\Contracts\ConnectorAi\Action\DataType\TaxonomyEntry`](https://doc.ibexa.co/en/5.0/api/php_api/php_api_reference/classes/Ibexa-Contracts-ConnectorAi-Action-DataType-TaxonomyEntry.html) @@ -121,13 +172,13 @@ The following additions were made to the PHP API: - [`Ibexa\Contracts\Taxonomy\Embedding\TaxonomyEmbeddingFieldProviderInterface`](https://doc.ibexa.co/en/5.0/api/php_api/php_api_reference/classes/Ibexa-Contracts-Taxonomy-Embedding-TaxonomyEmbeddingFieldProviderInterface.html) - [`Ibexa\Contracts\Taxonomy\Search\Query\Value\TaxonomyEmbedding`](https://doc.ibexa.co/en/5.0/api/php_api/php_api_reference/classes/Ibexa-Contracts-Taxonomy-Search-Query-Value-TaxonomyEmbedding.html) -###### Search: +##### Search: - [`Ibexa\Contracts\AdminUi\ContentType\ContentTypeFieldsByExpressionServiceInterface`](https://doc.ibexa.co/en/5.0/api/php_api/php_api_reference/classes/Ibexa-Contracts-AdminUi-ContentType-ContentTypeFieldsByExpressionServiceInterface.html) - [`Ibexa\Contracts\CoreSearch\Values\Query\PaginationAwareInterface`](https://doc.ibexa.co/en/5.0/api/php_api/php_api_reference/classes/Ibexa-Contracts-CoreSearch-Values-Query-PaginationAwareInterface.html) - [`Ibexa\Contracts\SiteFactory\Values\Query\Criterion\MatchTreeRootLocationIds`](https://doc.ibexa.co/en/5.0/api/php_api/php_api_reference/classes/Ibexa-Contracts-SiteFactory-Values-Query-Criterion-MatchTreeRootLocationIds.html) -###### Other: +##### Other: - [`Ibexa\Contracts\ProductCatalog\CapabilitiesEnum`](https://doc.ibexa.co/en/5.0/api/php_api/php_api_reference/classes/Ibexa-Contracts-ProductCatalog-CapabilitiesEnum.html) - [`Ibexa\Contracts\ProductCatalog\CapabilitiesServiceInterface`](https://doc.ibexa.co/en/5.0/api/php_api/php_api_reference/classes/Ibexa-Contracts-ProductCatalog-CapabilitiesServiceInterface.html) @@ -139,14 +190,14 @@ The following additions were made to the PHP API: [[% set version = 'v5.0.3' %]] [[= release_note_entry_begin("Ibexa DXP " + version, '2024-10-17', ['Headless', 'Experience', 'Commerce']) =]] -#### Security +### Security This release includes security fixes. To learn more, see the [corresponding security advisory](https://developers.ibexa.co/security-advisories/ibexa-sa-2025-004-xss-and-enumeration-vulnerabilities-in-back-office). -#### Developer experience +### Developer experience -##### PHP API +#### PHP API The PHP API has been expanded with the following: @@ -187,7 +238,7 @@ The PHP API has been expanded with the following: [[% set version = 'v5.0.2' %]] [[= release_note_entry_begin("Ibexa DXP " + version, '2025-09-09', ['Headless', 'Experience', 'Commerce', 'New feature']) =]] -#### Collaboration +### Collaboration The new [Collaborative editing feature](collaborative_editing_guide.md) allows multiple users to preview, review, and edit the same content, improving teamwork and streamlining the review process. Internal and external users can be invited to a collaboration session, through different sharing options. @@ -196,36 +247,36 @@ With Real-time editing, more advanced part of the feature, users can see each ot Additionally, shared drafts can be accessed and managed through new dashboard tabs: **My shared drafts** and **Drafts shared with me**, helping users stay organized. -#### Discount indexing +### Discount indexing Discounts now allow scheduling a re-indexing of discounted product catalog prices at the most convenient time by using the Ibexa Messenger package. Ibexa Messenger is a customization of the Symfony Messenger package, created to adjust it to [[= product_name =]]'s needs. Once properly configured, it uses a background queue to trigger price re-indexing, ensuring efficient use of system resources without causing performance disruptions. -#### Improvements to notifications +### Improvements to notifications An improved notifications system is now more intuitive. Developers can now create and configure their own notification types, while users can now [browse through a list of notifications](https://doc.ibexa.co/projects/userguide/en/latest/getting_started/notifications/), where they can either act on them or dismiss them. ![A searchable notifications list](502_notifications_screen.png "A searchable notifications list") -#### Chat GPT 5.0 support +### Chat GPT 5.0 support With improved reasoning and greater accuracy in mind, the AI Connector package has been enhanced by adding ChatGPT 5.0 to its list of supported LLMs. ![ChatGPT 5.0 on a list of supported LLMs](502_ai_connector_gpt_50.png "ChatGPT 5.0 on a list of supported LLMs") -#### Developer experience +### Developer experience -##### New packages +#### New packages The following packages have been introduced in Ibexa DXP v5.0.2: - ibexa/collaboration - ibexa/messenger -##### New version of PHP Storm Plugin +#### New version of PHP Storm Plugin To further improve your experience with Ibexa DXP, a 1.14.0 version of [PHP Storm Plugin](phpstorm_plugin.md) has been released, which brings the following changes: @@ -235,7 +286,7 @@ To further improve your experience with Ibexa DXP, a 1.14.0 version of [PHP Stor - Added code completion for Twig Component Groups in YAML config files and AsTwigComponent attribute - Added code completion for Twig Component Types in YAML config files -##### REST APIs +#### REST APIs Ibexa DXP v5.0.2 adds REST API coverage for the following features: @@ -254,7 +305,7 @@ Ibexa DXP v5.0.2 adds REST API coverage for the following features: - Discount - DiscountList -##### PHP API +#### PHP API The PHP API has been expanded with the following: @@ -312,7 +363,7 @@ The PHP API has been expanded with the following: - [`Ibexa\Contracts\Collaboration\Session\Query\SortClause\Id`](https://doc.ibexa.co/en/5.0/api/php_api/php_api_reference/classes/Ibexa-Contracts-Collaboration-Session-Query-SortClause-Id.html) - [`Ibexa\Contracts\Collaboration\Session\Query\SortClause\UpdatedAt`](https://doc.ibexa.co/en/5.0/api/php_api/php_api_reference/classes/Ibexa-Contracts-Collaboration-Session-Query-SortClause-UpdatedAt.html) -#### Full changelog +### Full changelog [[% include 'snippets/release_50.md' %]] @@ -322,36 +373,36 @@ The PHP API has been expanded with the following: [[= release_note_entry_begin("Ibexa DXP " + version, '2025-08-19', ['Headless', 'Experience', 'Commerce', 'New feature']) =]] -#### Special characters in online editor +### Special characters in online editor The [online editor](online_editor_guide.md) now allows to easily enter special characters like currency symbols. It uses the [special characters plugin](https://ckeditor.com/docs/ckeditor5/latest/features/special-characters.html). ![Special characters in online editor](4.6_special_characters.png "Special characters in online editor") -#### Support for Solr 9 +### Support for Solr 9 With this release, [[= product_name =]] starts supporting [Solr 9](requirements.md#search). Solr 9 comes with support for [Dense Vector Search](https://solr.apache.org/guide/solr/latest/query-guide/dense-vector-search.html), paving the way for incoming improvements to the [AI Actions](ai_actions.md) feature. -#### Improved content creation interface +### Improved content creation interface The editing interface of the back office is now improved to better highlight the language, creator, and the publication date when working with content items. ![Improved interface for content creation](4.6_improved_editing.png "Improved interface for content creation") -#### Taxonomy Subtree limitation +### Taxonomy Subtree limitation You can now manage access to [taxonomy items](taxonomy.md) more effectively by using the new [Taxonomy Subtree limitation](limitation_reference.md#taxonomy-subtree-limitation). In addition, you can now use the [Taxonomy limitation](limitation_reference.md#taxonomy-limitation) together with the `taxonomy/assign` policy. -#### Base price column added to a Product Picker view +### Base price column added to a Product Picker view The Product Picker tool that, for example, lets you [select products eligible for discounts]([[= user_doc =]]/commerce/discounts/work_with_discounts/#create-new-discount), now displays a **Base price** column for products and product variants. -#### PHP API +### PHP API The PHP API has been enhanced with the following new classes: @@ -361,7 +412,7 @@ The PHP API has been enhanced with the following new classes: This release brings additional minor improvements to the developer's experience that result from capabilities offered by PHP in version 8.3. -#### Full changelog +### Full changelog [[% include 'snippets/release_50.md' %]] diff --git a/docs/release_notes/img/5.0_open_in_profiler.png b/docs/release_notes/img/5.0_open_in_profiler.png new file mode 100644 index 0000000000..f31ec3ffd8 Binary files /dev/null and b/docs/release_notes/img/5.0_open_in_profiler.png differ diff --git a/docs/search/search_engines/elasticsearch/configure_elasticsearch.md b/docs/search/search_engines/elasticsearch/configure_elasticsearch.md index 37df214ff7..29e9f5bd3f 100644 --- a/docs/search/search_engines/elasticsearch/configure_elasticsearch.md +++ b/docs/search/search_engines/elasticsearch/configure_elasticsearch.md @@ -108,40 +108,28 @@ ibexa_elasticsearch: When you configure a cluster-based connection, and the cluster consists of many nodes, you can choose strategies that govern how the cluster reacts to changing operating conditions, or how workload is distributed among the nodes. -#### Connection pool +#### Node pool settings -With this setting you decide how a list of hosts that form a cluster is managed. -The list of active hosts tends to change in time, due to different reasons, such as connectivity issues, host malfunction, or the fact that you add new hosts to the cluster to increase its performance. -By default, the `StaticNoPingConnectionPool` setting is used. +With these settings you decide how nodes in the cluster are selected and how failed nodes are resurrected. +The node pool manages the list of active nodes, which can change over time due to connectivity issues, host malfunction, or when you add new nodes to the cluster to increase performance. -You can change the default setting with the following key: +By default, Elasticsearch uses the `SimpleNodePool` algorithm with `RoundRobin` selector and `NoResurrect` strategy. + +You can customize the node pool behavior with the following settings: ``` yaml : # ... - connection_pool: Elasticsearch\ConnectionPool\ + node_pool_selector: Elastic\Transport\NodePool\Selector\RoundRobin + node_pool_resurrect: Elastic\Transport\NodePool\Resurrect\NoResurrect ``` -For more information and a list of available choices, see [Connection pool](https://www.elastic.co/guide/en/elasticsearch/client/php-api/7.x/connection_pool.html). +For more information and a list of available choices, see [Node pool](https://www.elastic.co/guide/en/elasticsearch/client/php-api/8.19/node_pool.html). !!! tip "Load tests recommendation" - If you change the connection pool setting, it's recommended that you to perform load tests to check whether the change doesn't negatively impact the performance of your environment. - -#### Connection selector - -When the cluster consists of many hosts, the `connection_selector` setting decides what strategy is used to pick a node to send query requests to. -By default, the `RoundRobinSelector` setting is used. - -If you prefer a different strategy, or have created your own, custom strategy, you can change the default setting with the following key: - -``` yaml -: - # ... - connection_selector: Elasticsearch\ConnectionPool\Selectors\ -``` + If you change the node pool settings, it's recommended that you perform load tests to check whether the change doesn't negatively impact the performance of your environment. -For more information and a list of available choices, see [Selectors](https://www.elastic.co/guide/en/elasticsearch/client/php-api/7.x/selectors.html). ##### Number of retries @@ -154,9 +142,9 @@ By default, `null` is used, which means that the number of retries equals to the retries: null ``` -Depending on the connection pool that you select, [[= product_name =]]'s reaction to reaching the maximum number of retries might differ. +Depending on the node pool settings that you select, [[= product_name =]]'s reaction to reaching the maximum number of retries might differ. -For more information, see [Set retries](https://www.elastic.co/guide/en/elasticsearch/client/php-api/7.x/set-retries.html). +For more information, see [Set retries](https://www.elastic.co/guide/en/elasticsearch/client/php-api/8.19/set-retries.html). ## Configure Elasticsearch Cloud @@ -216,10 +204,10 @@ ibexa_elasticsearch: ### API key authentication If your Elasticsearch cluster is protected by API keys, you must provide the key and secret in authentication configuration to connect [[= product_name =]] with the cluster. -With API key authentication you can define different authorization levels, such as [`create_index` or `index`](https://www.elastic.co/guide/en/elasticsearch/reference/7.x/security-privileges.html#privileges-list-indices). +With API key authentication you can define different authorization levels, such as [`create_index` or `index`](https://www.elastic.co/guide/en/elasticsearch/reference/8.19/security-privileges.html#privileges-list-indices). Such approach proves useful if the cluster is available to the public. -For more information, see [Create API key](https://www.elastic.co/guide/en/elasticsearch/reference/7.x/security-api-create-api-key.html). +For more information, see [Create API key](https://www.elastic.co/guide/en/elasticsearch/reference/8.19/security-api-create-api-key.html). When using API key authentication, you must pass the following parameters to authenticate access to the cluster: @@ -228,7 +216,7 @@ When using API key authentication, you must pass the following parameters to aut # ... authentication: type: api_key - credentials: ['', ''] + credentials: ['', ''] ``` For example: @@ -241,9 +229,34 @@ ibexa_elasticsearch: elastic_cloud_id: 'test:ZWFzdHVzMi5henVyZS5lbGFzdGljLWNsb3VkLmNvbTo5MjQzJGUwZ' authentication: type: api_key - credentials: ['8Ek5f3IBGQlWj6v4M7zG', 'rmI6IechSnSJymWJ4LZqUw'] + credentials: ['ui2lp2axTNmsyakw9tvNnw', 'VuaCfGcBCdbkQm-e5aOx'] ``` +Alternatively, pass the encoded API key value, which Elasticsearch also calls "API key credentials": + +``` yaml +: + # ... + authentication: + type: api_key + credentials: [''] +``` + +For example: + +``` yaml +ibexa_elasticsearch: + connections: + cloud: + debug: true + elastic_cloud_id: 'test:ZWFzdHVzMi5henVyZS5lbGFzdGljLWNsb3VkLmNvbTo5MjQzJGUwZ' + authentication: + type: api_key + credentials: ['VnVhQ2ZHY0JDZGJrUW0tZTVhT3g6dWkybHAyYXhUTm1zeWFrdzl0dk5udw=='] +``` + +Refer to the [examples in Elasticsearch documentation](https://www.elastic.co/guide/en/elasticsearch/reference/8.19/security-api-create-api-key.html#security-api-create-api-key-example) to see the difference between API key, API key id, and encoded API key. + ### SSL When you need to protect your communication with the Elasticsearch server, you can use SSL encryption. @@ -292,24 +305,27 @@ To do this, pass the following setting under the `ssl` key: verification: false ``` -For more information, see [Elasticsearch: SSL Encryption](https://www.elastic.co/guide/en/elasticsearch/client/php-api/7.x/connceting.html#ssl-encryption). +For more information, see [Elasticsearch: SSL Encryption](https://www.elastic.co/guide/en/elasticsearch/client/php-api/8.19/connecting.html#ssl-encryption). ### Enable debugging In a staging environment, you can log messages about the status of communication with Elasticsearch. You can then use Symfony Profiler to review the logs. -By default, debugging is disabled. To enable debugging, you can toggle either of the following two settings: +By default, debugging is disabled. To enable debugging, you can use the following setting: ``` yaml : # ... debug: - trace: ``` -- `debug` logs basic information about a request, such as request status and time. -- `trace` logs additional information, such as steps to reproduce an exact copy of a query. +- `debug` logs information about requests, including request status and timing + +!!! note "Elasticsearch 7 compatibility" + + If you're using Elasticsearch 7, you can also use the `trace` setting for additional debugging information. + This setting is deprecated and removed in Elasticsearch 8. !!! tip @@ -370,7 +386,7 @@ Index names use the following pattern: - `settings` - Settings under this key control all aspects related to an index. -For more information and a list of available settings, see [Elasticsearch documentation](https://www.elastic.co/guide/en/elasticsearch/reference/7.x/index-modules.html#index-modules-settings). +For more information and a list of available settings, see [Elasticsearch documentation](https://www.elastic.co/guide/en/elasticsearch/reference/8.19/index-modules.html#index-modules-settings). For example, you can define settings that convert text into a format that is optimized for search, like a normalizer that changes a case of all phrases in the index: @@ -392,7 +408,7 @@ For more information and a list of available settings, see [Elasticsearch docume - `mappings` - Settings under this key define mapping for fields in the index. -For more information about mappings, see [Elasticsearch documentation](https://www.elastic.co/guide/en/elasticsearch/reference/7.x/mapping.html). +For more information about mappings, see [Elasticsearch documentation](https://www.elastic.co/guide/en/elasticsearch/reference/8.19/mapping.html). When you create a custom index template, with settings for your own field and document types, make sure that it contains mappings for all searchable fields that are available in [[= product_name =]]. For an example of default configuration with a list of searchable fields. @@ -401,7 +417,7 @@ For more information about mappings, see [Elasticsearch documentation](https://w ### Fine-tune the search results Your search results can be adjusted by configuring additional parameters. -For a list of available mapping parameters and their usage, see [Elasticsearch documentation](https://www.elastic.co/guide/en/elasticsearch/reference/7.x/mapping-params.html). +For a list of available mapping parameters and their usage, see [Elasticsearch documentation](https://www.elastic.co/guide/en/elasticsearch/reference/8.19/mapping-params.html). For example, you can apply a mapping parameter, in this case, a normalizer, to a specific mapping under the `dynamic_templates` key: @@ -487,9 +503,9 @@ For more information about specifying the pattern for your language, see [Define #### Create config for language specific analyzer -For information about configuring an analyzer for each specific language, see [Elasticsearch documentation](https://www.elastic.co/guide/en/elasticsearch/reference/7.17/analysis-lang-analyzer.html). +For information about configuring an analyzer for each specific language, see [Elasticsearch documentation](https://www.elastic.co/guide/en/elasticsearch/reference/8.19/analysis-lang-analyzer.html). -An adoption of the [English analyzer](https://www.elastic.co/guide/en/elasticsearch/reference/7.17/analysis-lang-analyzer.html#english-analyzer) in [[= product_name =]] configuration looks like this: +An adoption of the [English analyzer](https://www.elastic.co/guide/en/elasticsearch/reference/8.19/analysis-lang-analyzer.html#english-analyzer) in [[= product_name =]] configuration looks like this: ```yaml hl_lines="3-5 15-23 35 41-52 94 99" [[= include_file('code_samples/search/custom/config/packages/elasticsearch-en.yaml') =]] @@ -519,7 +535,7 @@ ibexa_elasticsearch: - ger_de ``` -For more information about how Elasticsearch handles settings and mappings from multiple templates that match the same index, see [Elasticsearch documentation](https://www.elastic.co/guide/en/elasticsearch/reference/7.x/indices-templates-v1.html#multiple-templates-v1). +For more information about how Elasticsearch handles settings and mappings from multiple templates that match the same index, see [Elasticsearch documentation](https://www.elastic.co/guide/en/elasticsearch/reference/8.19/index-templates.html). # Extend Elasticsearch diff --git a/docs/search/search_engines/elasticsearch/elasticsearch_overview.md b/docs/search/search_engines/elasticsearch/elasticsearch_overview.md index 151fb797c3..c84ba47a66 100644 --- a/docs/search/search_engines/elasticsearch/elasticsearch_overview.md +++ b/docs/search/search_engines/elasticsearch/elasticsearch_overview.md @@ -14,7 +14,7 @@ Instead of searching text directly, it searches and index. Thanks to this mechanism, it's able to achieve fast response. For a detailed description of advanced settings that you might require in a specific production environment, see the documentation provided by Elastic. -Start with the [Set up Elasticsearch](https://www.elastic.co/guide/en/elasticsearch/reference/7.7/setup.html) section. +Start with the [Set up Elasticsearch](https://www.elastic.co/guide/en/elasticsearch/reference/8.19/setup.html) section. **Prerequisite** @@ -36,4 +36,4 @@ To update the schema and then reindex the search, use the following commands: ```bash php bin/console ibexa:elasticsearch:put-index-template --overwrite php bin/console ibexa:reindex -``` \ No newline at end of file +``` diff --git a/docs/search/search_engines/elasticsearch/install_elasticsearch.md b/docs/search/search_engines/elasticsearch/install_elasticsearch.md index bcfeeafee1..495337dadc 100644 --- a/docs/search/search_engines/elasticsearch/install_elasticsearch.md +++ b/docs/search/search_engines/elasticsearch/install_elasticsearch.md @@ -6,16 +6,16 @@ description: Install Elasticsearch to use it with Ibexa DXP. ## Download and install Elasticsearch -[Install Elasticsearch](https://www.elastic.co/guide/en/elasticsearch/reference/7.7/install-elasticsearch.html) on your server. +[Install Elasticsearch](https://www.elastic.co/guide/en/elasticsearch/reference/8.19/install-elasticsearch.html) on your server. As an example, use the following [Docker](https://docs.docker.com/get-started/docker-overview/) command: ```yml -docker run -d --name ibexa-dxp-elasticsearch -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" docker.elastic.co/elasticsearch/elasticsearch:7.16.2 +docker run -d --name ibexa-dxp-elasticsearch -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" docker.elastic.co/elasticsearch/elasticsearch:8.19.0 ``` !!! note - [[= product_name =]] supports Elasticsearch in version 7.16.2 or higher. + [[= product_name =]] supports Elasticsearch in versions 7.16 and 8.19. ## Verify the instance @@ -26,21 +26,21 @@ It should be similar to the following example: ``` json { - "name" : "doej-MacPro-mTkBe", - "cluster_name" : "elasticsearch", - "cluster_uuid" : "WLYqnQ_lSZGbX-vDIe_vZQ", - "version" : { - "number" : "7.7.0", - "build_flavor" : "default", - "build_type" : "tar", - "build_hash" : "5b1fea5", - "build_date" : "2020-05-10T02:35:59.208Z", - "build_snapshot" : false, - "lucene_version" : "8.5.1", - "minimum_wire_compatibility_version" : "6.8.0", - "minimum_index_compatibility_version" : "6.0.0-beta1" - }, - "tagline" : "You Know, for Search" + "name" : "f45b86ab3726", + "cluster_name" : "docker-cluster", + "cluster_uuid" : "5OAEghGPTLSd4jUJColoNQ", + "version" : { + "number" : "8.19.0", + "build_flavor" : "default", + "build_type" : "docker", + "build_hash" : "93788a8c2882eb5b606510680fac214cff1c7a22", + "build_date" : "2025-07-23T22:10:18.138212839Z", + "build_snapshot" : false, + "lucene_version" : "9.12.2", + "minimum_wire_compatibility_version" : "7.17.0", + "minimum_index_compatibility_version" : "7.0.0" + }, + "tagline" : "You Know, for Search" } ``` @@ -91,4 +91,4 @@ php bin/console ibexa:reindex !!! caution "Risks of premature indexing" Don't reindex your data before you create index templates. - Otherwise Elasticsearch attempts to use its [dynamic field mapping](https://www.elastic.co/guide/en/elasticsearch/reference/7.7/dynamic-field-mapping.html) feature to create type mappings automatically. + Otherwise Elasticsearch attempts to use its [dynamic field mapping](https://www.elastic.co/guide/en/elasticsearch/reference/8.19/dynamic-field-mapping.html) feature to create type mappings automatically. diff --git a/docs/update_and_migration/from_5.0/update_from_5.0.md b/docs/update_and_migration/from_5.0/update_from_5.0.md index 3a4eb92ef0..4e7a7a4d96 100644 --- a/docs/update_and_migration/from_5.0/update_from_5.0.md +++ b/docs/update_and_migration/from_5.0/update_from_5.0.md @@ -180,6 +180,107 @@ If the platform comes from lower than v5.0.3 and is updated to higher than v5.0. WHERE tree_root_location_id IS NULL AND config::jsonb ? 'ibexa.site_access.config.content.tree_root.location_id'; ``` +## v5.0.5 + +### Elasticsearch 8 support + +As of v5.0.5, [[= product_name =]] adds support for Elasticsearch 8.19 or higher. +You can continue using [unsupported Elasticsearch 7.16.2+](https://www.elastic.co/support/eol), but it's recommended to upgrade to Elasticsearch 8 for improved performance and security features. + +When choosing to keep using Elasticsearch 7.16.2, adjust your configuration as described in the [Update configuration](#update-configuration) section below to avoid using deprecated settings. + +If you choose to upgrade to Elasticsearch 8, follow these steps: + +#### Update Elasticsearch server + +Upgrade your Elasticsearch server to version 8.19 or higher. +Follow the [Elasticsearch upgrade guide](https://www.elastic.co/guide/en/elastic-stack/8.19/upgrading-elastic-stack.html#prepare-to-upgrade) for detailed instructions. + +When using [[= product_name_cloud =]], see [Elasticsearch service](https://docs.upsun.com/add-services/elasticsearch.html) for a list of supported versions. + +#### Update configuration + +Update your configuration in `config/packages/ibexa_elasticsearch.yaml`. + +##### Replace deprecated connection pool settings + +The deprecated `connection_pool` and `connection_selector` settings are now ignored and don't have any effect. +Replace them with appropriate `node_pool_selector` and `node_pool_resurrect` settings: + +``` yaml +# Old configuration (Elasticsearch 7 - deprecated) +ibexa_elasticsearch: + connections: + default: + connection_pool: 'Elasticsearch\ConnectionPool\StaticNoPingConnectionPool' + connection_selector: 'Elasticsearch\ConnectionPool\Selectors\RoundRobinSelector' +``` + +``` yaml +# New configuration (Elasticsearch 7 and 8) +ibexa_elasticsearch: + connections: + default: + node_pool_selector: 'Elastic\Transport\NodePool\Selector\RoundRobin' + node_pool_resurrect: 'Elastic\Transport\NodePool\Resurrect\NoResurrect' +``` + +For more information, see [Node pool settings](configure_elasticsearch.md#node-pool-settings). + +##### Remove trace option + +The `trace` debugging option is no longer available. + +``` yaml +# Old configuration (Elasticsearch 7) +ibexa_elasticsearch: + connections: + default: + debug: true + trace: true +``` + +``` yaml +# New configuration (Elasticsearch 7 and 8) +ibexa_elasticsearch: + connections: + default: + debug: true + # Trace option is no longer available +``` + +#### Reindex content + +After upgrading to Elasticsearch 8 and updating your configuration, reindex the search engine: + +1. Push the index templates: + + ``` bash + php bin/console ibexa:elasticsearch:put-index-template --overwrite + ``` + +2. Reindex your content: + + ``` bash + php bin/console ibexa:reindex + ``` + +### Database update + +Run the provided SQL upgrade script to ensure the Messenger tables for [background tasks](background_tasks.md) exist in your database: + +=== "MySQL" + + ``` sql + mysql -u -p < vendor/ibexa/installer/upgrade/db/mysql/ibexa-5.0.4-to-5.0.5.sql + ``` + +=== "PostgreSQL" + + ``` sql + psql < vendor/ibexa/installer/upgrade/db/postgresql/ibexa-5.0.4-to-5.0.5.sql + ``` + ## LTS Updates and additional packages [LTS Updates](editions.md#lts-updates) are standalone packages with their own update procedures. diff --git a/mkdocs.yml b/mkdocs.yml index b1a7052bea..77a37fda43 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -987,7 +987,7 @@ extra: latest_tag_4_4: '4.4.4' latest_tag_4_5: '4.5.7' latest_tag_4_6: '4.6.26' - latest_tag_5_0: '5.0.4' + latest_tag_5_0: '5.0.5' symfony_doc: 'https://symfony.com/doc/7.3' user_doc: 'https://doc.ibexa.co/projects/userguide/en/5.0'