Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -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.
Expand Down
6 changes: 3 additions & 3 deletions docs/getting_started/requirements.md
Original file line number Diff line number Diff line change
Expand Up @@ -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.
Expand Down Expand Up @@ -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)
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It looks unfair to me to have links on Varnish and even Memcached on 4.6- tabs, and not for other elements.

Suggested change
- 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)
- [Redis](https://redis.io/) 7.2+, 8.4+, or [Valkey](https://valkey.io/) 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)

Not sure it worths it. The Redis homepage is not very welcoming.
And the side quest would be to add more links for MySQL, MariaDB, Elasticsearch, and so on…

- [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.
Expand All @@ -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.
Expand Down
94 changes: 55 additions & 39 deletions docs/search/search_engines/elasticsearch/configure_elasticsearch.md
Original file line number Diff line number Diff line change
Expand Up @@ -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_name>:
# ...
connection_pool: Elasticsearch\ConnectionPool\<connection_pool_name>
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_name>:
# ...
connection_selector: Elasticsearch\ConnectionPool\Selectors\<selector_name>
```
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

Expand All @@ -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

Expand Down Expand Up @@ -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:

Expand All @@ -228,7 +216,7 @@ When using API key authentication, you must pass the following parameters to aut
# ...
authentication:
type: api_key
credentials: ['<api_key>', '<api_secret>']
credentials: ['<api_key>', '<api_key_id>']
```

For example:
Expand All @@ -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
<connection_name>:
# ...
authentication:
type: api_key
credentials: ['<api_key_encoded>']
```

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.
Expand Down Expand Up @@ -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
<connection_name>:
# ...
debug: <true/false>
trace: <true/false>
```

- `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

Expand Down Expand Up @@ -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:

Expand All @@ -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.
Expand All @@ -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:

Expand Down Expand Up @@ -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') =]]
Expand Down Expand Up @@ -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

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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**

Expand All @@ -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
```
```
38 changes: 19 additions & 19 deletions docs/search/search_engines/elasticsearch/install_elasticsearch.md
Original file line number Diff line number Diff line change
Expand Up @@ -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

Expand All @@ -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"
}
```

Expand Down Expand Up @@ -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.
Loading