You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@james.apache.org by bt...@apache.org on 2022/08/23 10:25:13 UTC

[james-project] 20/26: JAMES-3771 Antora: Elastic => OpenSearch rewords

This is an automated email from the ASF dual-hosted git repository.

btellier pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/james-project.git

commit 007964d6638562f2c6b29f84656fc101cacfc146
Author: Benoit Tellier <bt...@linagora.com>
AuthorDate: Mon Aug 8 10:12:27 2022 +0700

    JAMES-3771 Antora: Elastic => OpenSearch rewords
---
 .../distributed-app/docs/modules/ROOT/nav.adoc     |   2 +-
 .../ROOT/pages/architecture/consistency-model.adoc |  14 +-
 .../modules/ROOT/pages/architecture/index.adoc     |  10 +-
 .../docs/modules/ROOT/pages/configure/index.adoc   |   2 +-
 .../docs/modules/ROOT/pages/configure/jmap.adoc    |   2 +-
 .../{elasticsearch.adoc => opensearch.adoc}        | 146 +++++++++------------
 .../docs/modules/ROOT/pages/configure/tika.adoc    |   4 +-
 .../docs/modules/ROOT/pages/operate/guide.adoc     |  16 +--
 .../docs/modules/ROOT/pages/operate/webadmin.adoc  |   4 +-
 .../docs/modules/ROOT/pages/run/index.adoc         |   2 +-
 .../docs/modules/ROOT/pages/run/k8s-checklist.adoc |   2 +-
 .../docs/modules/ROOT/pages/run/k8s-secrets.adoc   |   4 +-
 .../docs/modules/ROOT/pages/run/k8s-values.adoc    |  20 +--
 .../docs/modules/ROOT/pages/run/run-docker.adoc    |  10 +-
 .../docs/modules/ROOT/pages/run/run-java.adoc      |   8 +-
 .../modules/ROOT/pages/run/run-kubernetes.adoc     |   6 +-
 16 files changed, 112 insertions(+), 140 deletions(-)

diff --git a/server/apps/distributed-app/docs/modules/ROOT/nav.adoc b/server/apps/distributed-app/docs/modules/ROOT/nav.adoc
index e2f3e41bc2..dc8eb998e6 100644
--- a/server/apps/distributed-app/docs/modules/ROOT/nav.adoc
+++ b/server/apps/distributed-app/docs/modules/ROOT/nav.adoc
@@ -26,7 +26,7 @@
 *** Storage dependencies
 **** xref:configure/blobstore.adoc[blobstore.properties]
 **** xref:configure/cassandra.adoc[cassandra.properties]
-**** xref:configure/elasticsearch.adoc[elasticsearch.properties]
+**** xref:configure/opensearch.adoc[opensearch.properties]
 **** xref:configure/rabbitmq.adoc[rabbitmq.properties]
 **** xref:configure/redis.adoc[redis.properties]
 **** xref:configure/tika.adoc[tika.properties]
diff --git a/server/apps/distributed-app/docs/modules/ROOT/pages/architecture/consistency-model.adoc b/server/apps/distributed-app/docs/modules/ROOT/pages/architecture/consistency-model.adoc
index e3bb501362..9ac610a56f 100644
--- a/server/apps/distributed-app/docs/modules/ROOT/pages/architecture/consistency-model.adoc
+++ b/server/apps/distributed-app/docs/modules/ROOT/pages/architecture/consistency-model.adoc
@@ -61,14 +61,14 @@ link:https://github.com/apache/james-project/tree/master/server/apps/distributed
 JMAP support could be added, but requires followup developments as some components critically depends on UIDs
 (for instance the search).
 
-=== ElasticSearch consistency model
+=== OpenSearch consistency model
 
-ElasticSearch relies on link:https://www.elastic.co/blog/a-new-era-for-cluster-coordination-in-elasticsearch[strong consistency]
+OpenSearch relies on link:https://www.elastic.co/blog/a-new-era-for-cluster-coordination-in-elasticsearch[strong consistency]
 with home grown algorithm.
 
 The 6.x release line, that the distributed server is using is known to be slow to recover from failures.
 
-Be aware that data is asynchronously indexed in ElasticSearch, changes will be eventually visible.
+Be aware that data is asynchronously indexed in OpenSearch, changes will be eventually visible.
 
 === RabbitMQ consistency model
 
@@ -100,7 +100,7 @@ when implemented for a given denormalization, enables auto-healing. When an inco
 The Distributed Server leverages several data stores:
 
  - Cassandra is used for metadata storage
- - ElasticSearch for search
+ - OpenSearch for search
  - Object Storage for large object storage
 
 Thus the Distributed Server also offers mechanisms to enforce consistency across data stores.
@@ -115,14 +115,14 @@ the object store payload first, then write the corresponding metadata in Cassand
 Such a procedure avoids metadata pointing to unexisting blobs, however might lead to some unreferenced
 blobs.
 
-=== Cassandra <=> ElasticSearch
+=== Cassandra <=> OpenSearch
 
 After being written to the primary stores (namely Cassandra & Object Storage), email content is
-asynchronously indexed into ElasticSearch.
+asynchronously indexed into OpenSearch.
 
 This process, called the EventBus, which retries temporary errors, and stores transient errors for
 later admin-triggered retries is described further xref:operate/guide.adoc#_mailbox_event_bus[here].
 His role is to spread load and limit inconsistencies.
 
 Furthermore, some xref:operate/guide.adoc#_usual_troubleshooting_procedures[re-indexing tasks]
-enables to re-synchronise ElasticSearch content with the primary data stores
+enables to re-synchronise OpenSearch content with the primary data stores
diff --git a/server/apps/distributed-app/docs/modules/ROOT/pages/architecture/index.adoc b/server/apps/distributed-app/docs/modules/ROOT/pages/architecture/index.adoc
index a91167e67c..90e02b9abc 100644
--- a/server/apps/distributed-app/docs/modules/ROOT/pages/architecture/index.adoc
+++ b/server/apps/distributed-app/docs/modules/ROOT/pages/architecture/index.adoc
@@ -14,8 +14,8 @@ a known pattern.
  * The *blob store* storage interface is responsible of storing potentially large binary data. For instance
  email bodies, headers or attachments. Different technologies can be used: *Cassandra*, or S3 compatible *Object Storage*
 (S3 or Swift).
- * *ElasticSearch* component empowers full text search on emails. It also enables querying data with unplanned access
-patterns. ElasticSearch throughtput do not however match the one of Cassandra thus its use is avoided upon regular workloads.
+ * *OpenSearch* component empowers full text search on emails. It also enables querying data with unplanned access
+patterns. OpenSearch throughtput do not however match the one of Cassandra thus its use is avoided upon regular workloads.
  * *RabbitMQ* enables James nodes of a same cluster to collaborate together. It is used to implement connected protocols,
 notification patterns as well as distributed resilient work queues and mail queue.
  * *Tika* (optional) enables text extraction from attachments, thus improving full text search results.
@@ -163,12 +163,12 @@ within the xref:#_blobstore[BlobStore].
 
 ==== Search index
 
-Emails are indexed asynchronously in ElasticSearch via the xref:#_event_bus[EventBus]
+Emails are indexed asynchronously in OpenSearch via the xref:#_event_bus[EventBus]
 in order to enpower advanced and fast email full text search.
 
 Text extraction can be set up using link:https://tika.apache.org/[Tika], allowing
 to extract the text from attachment, allowing to search your emails based on the attachment
-textual content. In such case, the ElasticSearch indexer will call a Tika server prior
+textual content. In such case, the OpenSearch indexer will call a Tika server prior
 indexing.
 
 ==== Quotas
@@ -204,7 +204,7 @@ called when an event is fired, allowing to do different kind of extra
 operations on the system, like:
 
 * Current quota calculation
-* Message indexation with ElasticSearch
+* Message indexation with OpenSearch
 * Mailbox annotations cleanup
 * Ham/spam reporting to Spam filtering system
 * …
diff --git a/server/apps/distributed-app/docs/modules/ROOT/pages/configure/index.adoc b/server/apps/distributed-app/docs/modules/ROOT/pages/configure/index.adoc
index ed09165bab..0b32b12ec1 100644
--- a/server/apps/distributed-app/docs/modules/ROOT/pages/configure/index.adoc
+++ b/server/apps/distributed-app/docs/modules/ROOT/pages/configure/index.adoc
@@ -31,7 +31,7 @@ Except specific documented cases, these files are required, at least to establis
 
 ** xref:configure/blobstore.adoc[*blobstore.properties*] allows to configure the BlobStore link:https://github.com/apache/james-project/blob/master/server/apps/distributed-app/sample-configuration/blob.properties[example]
 ** xref:configure/cassandra.adoc[*cassandra.properties*] allows to configure the Cassandra driver link:https://github.com/apache/james-project/blob/master/server/apps/distributed-app/sample-configuration/cassandra.properties[example]
-** xref:configure/elasticsearch.adoc[*elasticsearch.properties*] allows to configure ElasticSearch driver link:https://github.com/apache/james-project/blob/master/server/apps/distributed-app/sample-configuration/elasticsearch.properties[example]
+** xref:configure/opensearch.adoc[*opensearch.properties*] allows to configure OpenSearch driver link:https://github.com/apache/james-project/blob/master/server/apps/distributed-app/sample-configuration/opensearch.properties[example]
 ** xref:configure/rabbitmq.adoc[*rabbitmq.properties*] allows configuration for the RabbitMQ driver link:https://github.com/apache/james-project/blob/master/server/apps/distributed-app/sample-configuration/rabbitmq.properties[example]
 ** xref:configure/redis.adoc[*redis.properties*] allows configuration for the Redis driver link:https://github.com/apache/james-project/blob/master/server/apps/distributed-app/sample-configuration/redis.properties[example], that is used by optional
 distributed rate limiting component.
diff --git a/server/apps/distributed-app/docs/modules/ROOT/pages/configure/jmap.adoc b/server/apps/distributed-app/docs/modules/ROOT/pages/configure/jmap.adoc
index e791987518..2d0a5531fc 100644
--- a/server/apps/distributed-app/docs/modules/ROOT/pages/configure/jmap.adoc
+++ b/server/apps/distributed-app/docs/modules/ROOT/pages/configure/jmap.adoc
@@ -45,7 +45,7 @@ Default value: None. Supported units are B (bytes) K (KB) M (MB) G (GB).
 Default value: 30M. Supported units are B (bytes) K (KB) M (MB) G (GB).
 
 | view.email.query.enabled
-| Optional boolean. Defaults to false. Should simple Email/query be resolved against a Cassandra projection, or should we resolve them against ElasticSearch?
+| Optional boolean. Defaults to false. Should simple Email/query be resolved against a Cassandra projection, or should we resolve them against OpenSearch?
 This enables a higher resilience, but the projection needs to be correctly populated.
 
 | user.provisioning.enabled
diff --git a/server/apps/distributed-app/docs/modules/ROOT/pages/configure/elasticsearch.adoc b/server/apps/distributed-app/docs/modules/ROOT/pages/configure/opensearch.adoc
similarity index 63%
rename from server/apps/distributed-app/docs/modules/ROOT/pages/configure/elasticsearch.adoc
rename to server/apps/distributed-app/docs/modules/ROOT/pages/configure/opensearch.adoc
index c32815d81b..5ee6dec4f3 100644
--- a/server/apps/distributed-app/docs/modules/ROOT/pages/configure/elasticsearch.adoc
+++ b/server/apps/distributed-app/docs/modules/ROOT/pages/configure/opensearch.adoc
@@ -1,89 +1,89 @@
-= Distributed James Server &mdash; elasticsearch.properties
-:navtitle: elasticsearch.properties
+= Distributed James Server &mdash; opensearch.properties
+:navtitle: opensearch.properties
 
-Consult this link:https://github.com/apache/james-project/blob/master/server/apps/distributed-app/sample-configuration/elasticsearch.properties[example]
+Consult this link:https://github.com/apache/james-project/blob/master/server/apps/distributed-app/sample-configuration/opensearch.properties[example]
 to get some examples and hints.
 
-If you want more explanation about ElasticSearch configuration, you should visit the dedicated https://www.elastic.co/guide/en/elasticsearch/reference/current/index.html[documentation].
+If you want more explanation about OpenSearch configuration, you should visit the dedicated https://opensearch.org/[documentation].
 
-== ElasticSearch Configuration
+== OpenSearch Configuration
 
-This file section is used to configure the connection tp an ElasticSearch cluster.
+This file section is used to configure the connection tp an OpenSearch cluster.
 
 Here are the properties allowing to do so :
 
-.elasticsearch.properties content
+.opensearch.properties content
 |===
 | Property name | explanation
 
-| elasticsearch.clusterName
+| opensearch.clusterName
 | Is the name of the cluster used by James.
 
-| elasticsearch.nb.shards
+| opensearch.nb.shards
 | Number of shards for index provisionned by James
 
-| elasticsearch.nb.replica
+| opensearch.nb.replica
 | Number of replica for index provisionned by James (default: 0)
 
-| elasticsearch.index.waitForActiveShards
+| opensearch.index.waitForActiveShards
 | Wait for a certain number of active shard copies before proceeding with the operation. Defaults to 1.
 You may consult the https://www.elastic.co/guide/en/elasticsearch/reference/7.10/docs-index_.html#active-shards[documentation] for more information.
 
-| elasticsearch.retryConnection.maxRetries
+| opensearch.retryConnection.maxRetries
 | Number of retries when connecting the cluster
 
-| elasticsearch.retryConnection.minDelay
+| opensearch.retryConnection.minDelay
 | Minimum delay between connection attempts
 
-| elasticsearch.max.connections
-| Maximum count of HTTP connections allowed for the ElasticSearch driver. Optional integer, if unspecified driver defaults
+| opensearch.max.connections
+| Maximum count of HTTP connections allowed for the OpenSearch driver. Optional integer, if unspecified driver defaults
 applies (30 connections).
 
-| elasticsearch.max.connections.per.hosts
-| Maximum count of HTTP connections per host allowed for the ElasticSearch driver. Optional integer, if unspecified driver defaults
+| opensearch.max.connections.per.hosts
+| Maximum count of HTTP connections per host allowed for the OpenSearch driver. Optional integer, if unspecified driver defaults
 applies (10 connections).
 
 |===
 
 === Mailbox search
 
-The main use of ElasticSearch within the Distributed Server is indexing the mailbox content of users in order to enable
+The main use of OpenSearch within the Distributed Server is indexing the mailbox content of users in order to enable
 powerful and efficient full-text search of the mailbox content.
 
 Data indexing is performed asynchronously in a reliable fashion via a MailboxListener.
 
-Here are the properties related to the use of ElasticSearch for Mailbox Search:
+Here are the properties related to the use of OpenSearch for Mailbox Search:
 
-.elasticsearch.properties content
+.opensearch.properties content
 |===
 | Property name | explanation
 
-| elasticsearch.index.mailbox.name
+| opensearch.index.mailbox.name
 | Name of the mailbox index backed by the alias. It will be created if missing.
 
-| elasticsearch.index.name
-| *Deprecated* Use *elasticsearch.index.mailbox.name* instead.
+| opensearch.index.name
+| *Deprecated* Use *opensearch.index.mailbox.name* instead.
 Name of the mailbox index backed by the alias. It will be created if missing.
 
-| elasticsearch.alias.read.mailbox.name
+| opensearch.alias.read.mailbox.name
 | Name of the alias to use by Apache James for mailbox reads. It will be created if missing.
 The target of the alias is the index name configured above.
 
-| elasticsearch.alias.read.name
-| *Deprecated* Use *elasticsearch.alias.read.mailbox.name* instead.
+| opensearch.alias.read.name
+| *Deprecated* Use *opensearch.alias.read.mailbox.name* instead.
 Name of the alias to use by Apache James for mailbox reads. It will be created if missing.
 The target of the alias is the index name configured above.
 
-| elasticsearch.alias.write.mailbox.name
+| opensearch.alias.write.mailbox.name
 | Name of the alias to use by Apache James for mailbox writes. It will be created if missing.
 The target of the alias is the index name configured above.
 
-| elasticsearch.alias.write.name
-| *Deprecated* Use *elasticsearch.alias.write.mailbox.name* instead.
+| opensearch.alias.write.name
+| *Deprecated* Use *opensearch.alias.write.mailbox.name* instead.
 Name of the alias to use by Apache James for mailbox writes. It will be created if missing.
 The target of the alias is the index name configured above.
 
-| elasticsearch.indexAttachments
+| opensearch.indexAttachments
 | Indicates if you wish to index attachments or not (default: true).
 |===
 
@@ -95,67 +95,39 @@ Users quota are asynchronously indexed upon quota changes via a dedicated Mailbo
 
 The following properties affect quota search :
 
-.elasticsearch.properties content
+.opensearch.properties content
 |===
 | Property name | explanation
 
-| elasticsearch.index.quota.ratio.name
-| Specify the ElasticSearch alias name used for quotas
+| opensearch.index.quota.ratio.name
+| Specify the OpenSearch alias name used for quotas
 
-| elasticsearch.alias.read.quota.ratio.name
-| Specify the ElasticSearch alias name used for reading quotas
+| opensearch.alias.read.quota.ratio.name
+| Specify the OpenSearch alias name used for reading quotas
 
-| elasticsearch.alias.write.quota.ratio.name
-| Specify the ElasticSearch alias name used for writing quotas
+| opensearch.alias.write.quota.ratio.name
+| Specify the OpenSearch alias name used for writing quotas
 |===
 
-=== Disabling ElasticSearch
+=== Disabling OpenSearch
 
-ElasticSearch component can be disabled but consider it would make search feature to not work. In particular it will break JMAP protocol and SEARCH IMAP comment in an nondeterministic way.
+OpenSearch component can be disabled but consider it would make search feature to not work. In particular it will break JMAP protocol and SEARCH IMAP comment in an nondeterministic way.
 This is controlled in the `search.properties` file via the `implementation` property (defaults
-to `ElasticSearch`). Setting this configuration parameter to `scanning` will effectively disable ElasticSearch, no
+to `OpenSearch`). Setting this configuration parameter to `scanning` will effectively disable OpenSearch, no
 further indexation will be done however searches will rely on the scrolling search, leading to expensive and longer
-searches. Disabling ElasticSearch requires no extra action, however
-xref:operate/webadmin.adoc#reindexing_all_mails[a full re-indexing]needs to be carried out when enabling ElasticSearch.
-
-== Exporting metrics directly to ElasticSearch
-
-WARNING: A separate ElasticSearch server is required, as an ElasticSearch 6.3 is needed, which is
-not compatible with ElasticSearch 7.10, required by James.
-
-For configuring the metric reporting on ElasticSearch :
-
-.elasticsearch.properties content
-|===
-| Property name | explanation
-
-| elasticsearch.http.host
-| Optional. Host to report metrics on. Defaults to master host. Must be specified if metric export to ElasticSearch is enabled.
-
-| elasticsearch.http.port
-| Optional. Http port to use for publishing metrics. Must be specified if metric export to ElasticSearch is enabled.
-
-| elasticsearch.metrics.reports.enabled
-| Optional. Boolean value. Enables metrics reporting. Defaults to false.
-
-| elasticsearch.metrics.reports.period
-| Optional. Seconds between metric reports. Defaults to 60 seconds.
-
-| elasticsearch.metrics.reports.index
-| Optional. Index to publish metrics on. Defaults to `james-metrics`.
-
-|===
+searches. Disabling OpenSearch requires no extra action, however
+xref:operate/webadmin.adoc#reindexing_all_mails[a full re-indexing]needs to be carried out when enabling OpenSearch.
 
 == SSL Trusting Configuration
 
 By default, James will use the system TrustStore to validate https server certificates, if the certificate on
 ES side is already in the system TrustStore, you can leave the sslValidationStrategy property empty or set it to default.
 
-.elasticsearch.properties content
+.opensearch.properties content
 |===
 | Property name | explanation
 
-| elasticsearch.hostScheme.https.sslValidationStrategy
+| opensearch.hostScheme.https.sslValidationStrategy
 | Optional. Accept only *default*, *ignore*, *override*. Default is *default*. default: Use the default SSL TrustStore of the system.
 ignore: Ignore SSL Validation check (not recommended).
 override: Override the SSL Context to use a custom TrustStore containing ES server's certificate.
@@ -180,18 +152,18 @@ When there is a TrustStore file and the password to read, fill two options *trus
 and *trustStorePassword* with the TrustStore location and the password. ES client will accept
 the certificate of ES service.
 
-.elasticsearch.properties content
+.opensearch.properties content
 |===
 | Property name | explanation
 
-| elasticsearch.hostScheme.https.trustStorePath
-| Optional. Use it when https is configured in elasticsearch.hostScheme, and sslValidationStrategy is *override*
-Configure Elasticsearch rest client to use this trustStore file to recognize nginx's ssl certificate.
+| opensearch.hostScheme.https.trustStorePath
+| Optional. Use it when https is configured in opensearch.hostScheme, and sslValidationStrategy is *override*
+Configure OpenSearch rest client to use this trustStore file to recognize nginx's ssl certificate.
 Once you chose *override*, you need to specify both trustStorePath and trustStorePassword.
 
-| elasticsearch.hostScheme.https.trustStorePassword
-| Optional. Use it when https is configured in elasticsearch.hostScheme, and sslValidationStrategy is *override*
-Configure Elasticsearch rest client to use this trustStore file with the specified password.
+| opensearch.hostScheme.https.trustStorePassword
+| Optional. Use it when https is configured in opensearch.hostScheme, and sslValidationStrategy is *override*
+Configure OpenSearch rest client to use this trustStore file with the specified password.
 Once you chose *override*, you need to specify both trustStorePath and trustStorePassword.
 
 |===
@@ -199,11 +171,11 @@ Once you chose *override*, you need to specify both trustStorePath and trustStor
 During SSL handshaking, the client can determine whether accept or reject connecting to a remote server by its hostname.
 You can configure to use which HostNameVerifier in the client.
 
-.elasticsearch.properties content
+.opensearch.properties content
 |===
 | Property name | explanation
 
-| elasticsearch.hostScheme.https.hostNameVerifier
+| opensearch.hostScheme.https.hostNameVerifier
 | Optional. Default is *default*. default: using the default hostname verifier provided by apache http client.
 accept_any_hostname: accept any host (not recommended).
 
@@ -212,7 +184,7 @@ accept_any_hostname: accept any host (not recommended).
 == Search overrides
 
 *Search overrides* allow resolution of predefined search queries against alternative sources of data
-and allow bypassing ElasticSearch. This is useful to handle most resynchronisation queries that
+and allow bypassing OpenSearch. This is useful to handle most resynchronisation queries that
 are simple enough to be resolved against Cassandra.
 
 Possible values are:
@@ -228,25 +200,25 @@ Possible values are:
  Lists all messages and filters out deleted message thus this is based on the following heuristic: most messages are not marked as deleted.
   - `org.apache.james.mailbox.cassandra.search.UnseenSearchOverride`. List unseen messages in the corresponding cassandra projection.
 
-Please note that custom overrides can be defined here. `elasticsearch.search.overrides` allow specifying search overrides and is a
+Please note that custom overrides can be defined here. `opensearch.search.overrides` allow specifying search overrides and is a
 coma separated list of search override FQDNs. Default to none.
 
 EG:
 
 ----
-elasticsearch.search.overrides=org.apache.james.mailbox.cassandra.search.AllSearchOverride,org.apache.james.mailbox.cassandra.search.DeletedSearchOverride, org.apache.james.mailbox.cassandra.search.DeletedWithRangeSearchOverride,org.apache.james.mailbox.cassandra.search.NotDeletedWithRangeSearchOverride,org.apache.james.mailbox.cassandra.search.UidSearchOverride,org.apache.james.mailbox.cassandra.search.UnseenSearchOverride
+opensearch.search.overrides=org.apache.james.mailbox.cassandra.search.AllSearchOverride,org.apache.james.mailbox.cassandra.search.DeletedSearchOverride, org.apache.james.mailbox.cassandra.search.DeletedWithRangeSearchOverride,org.apache.james.mailbox.cassandra.search.NotDeletedWithRangeSearchOverride,org.apache.james.mailbox.cassandra.search.UidSearchOverride,org.apache.james.mailbox.cassandra.search.UnseenSearchOverride
 ----
 
 == Configure dedicated language analyzers for mailbox index
 
-Elasticsearch supports various language analyzers out of the box: https://www.elastic.co/guide/en/elasticsearch/reference/current/analysis-lang-analyzer.html.
+OpenSearch supports various language analyzers out of the box: https://www.elastic.co/guide/en/elasticsearch/reference/current/analysis-lang-analyzer.html.
 
 James could utilize this to improve the user searching experience upon his language.
 
 While one could modify mailbox index mapping programmatically to customize this behavior, here we should just document a manual way to archive this without breaking our common index' mapping code.
 
 The idea is modifying mailbox index mappings with the target language analyzer as a JSON file, then submit it directly
-to ElasticSearch via cURL command to create the mailbox index before James start. Let's adapt dedicated language analyzers
+to OpenSearch via cURL command to create the mailbox index before James start. Let's adapt dedicated language analyzers
 where appropriate for the following fields:
 
 .Language analyzers propose change
@@ -285,7 +257,7 @@ where appropriate for the following fields:
 In there:
 
   - `keep_mail_and_url` and `standard` are our current analyzers for mailbox index.
-  - `language_a` analyzer: the built-in analyzer of Elasticsearch. EG: `french`
+  - `language_a` analyzer: the built-in analyzer of OpenSearch. EG: `french`
   - `keep_mail_and_url_language_a` analyzer: a custom of `keep_mail_and_url` analyzer with some language filters.Every language has
 their own filters so please have a look at filters which your language need to add. EG which need to be added for French:
 ----
diff --git a/server/apps/distributed-app/docs/modules/ROOT/pages/configure/tika.adoc b/server/apps/distributed-app/docs/modules/ROOT/pages/configure/tika.adoc
index a119512f77..fdb2cc9cf7 100644
--- a/server/apps/distributed-app/docs/modules/ROOT/pages/configure/tika.adoc
+++ b/server/apps/distributed-app/docs/modules/ROOT/pages/configure/tika.adoc
@@ -1,7 +1,7 @@
 = Distributed James Server &mdash; tika.properties
 :navtitle: tika.properties
 
-When using ElasticSearch, you can configure an external Tika server for extracting and indexing text from attachments.
+When using OpenSearch, you can configure an external Tika server for extracting and indexing text from attachments.
 Thus you can significantly improve user experience upon text searches.
 
 Note: You can launch a tika server using this command line:
@@ -12,7 +12,7 @@ docker run --name tika linagora/docker-tikaserver:1.24
 
 Here are the different properties:
 
-.elasticsearch.properties content
+.tika.properties content
 |===
 | Property name | explanation
 
diff --git a/server/apps/distributed-app/docs/modules/ROOT/pages/operate/guide.adoc b/server/apps/distributed-app/docs/modules/ROOT/pages/operate/guide.adoc
index 5ff87ff214..9784bb5eb3 100644
--- a/server/apps/distributed-app/docs/modules/ROOT/pages/operate/guide.adoc
+++ b/server/apps/distributed-app/docs/modules/ROOT/pages/operate/guide.adoc
@@ -127,13 +127,13 @@ xref:operate/webadmin.adoc#_redeliver_group_events[redeliver group events]
 or even just
 xref:operate/webadmin.adoc#_redeliver_a_single_event[redeliver a single event].
 
-== ElasticSearch Indexing
+== OpenSearch Indexing
 
-A projection of messages is maintained in ElasticSearch via a listener
+A projection of messages is maintained in OpenSearch via a listener
 plugged into the mailbox event bus in order to enable search features.
 
-You can find more information about ElasticSearch configuration
-link:config-elasticsearch.html[here].
+You can find more information about OpenSearch configuration
+link:config-opensearch.html[here].
 
 === Usual troubleshooting procedures
 
@@ -144,7 +144,7 @@ Currently, an administrator can monitor indexation failures through
 `ERROR` log review. You can as well
 xref:operate/webadmin.adoc#_listing_failed_events[list failed events] by
 looking with the group called
-`org.apache.james.mailbox.opensearch.events.ElasticSearchListeningMessageSearchIndex$ElasticSearchListeningMessageSearchIndexGroup`.
+`org.apache.james.mailbox.opensearch.events.OpenSearchListeningMessageSearchIndex$OpenSearchListeningMessageSearchIndexGroup`.
 A first on-the-fly solution could be to just
 link:#_mailbox_event_bus[redeliver those group events with event dead letter].
 
@@ -161,7 +161,7 @@ When checking the result of a reIndexing task, you might have failed
 reprocessed mails. You can still use the task ID to
 xref:operate/webadmin.adoc#_fixing_previously_failed_reindexing[reprocess previously failed reIndexing mails].
 
-=== On the fly ElasticSearch Index setting update
+=== On the fly OpenSearch Index setting update
 
 Sometimes you might need to update index settings. Cases when an
 administrator might want to update index settings include:
@@ -189,8 +189,8 @@ field being present)
 https://www.elastic.co/guide/en/elasticsearch/reference/7.10/indices-delete-index.html[drop
 the old index]
 * You might want as well modify the James configuration file
-https://github.com/apache/james-project/blob/master/server/apps/distributed-app/sample-configuration/elasticsearch.properties[elasticsearch.properties]
-by setting the parameter `elasticsearch.index.mailbox.name` to the name
+https://github.com/apache/james-project/blob/master/server/apps/distributed-app/sample-configuration/opensearch.properties[elasticsearch.properties]
+by setting the parameter `opensearch.index.mailbox.name` to the name
 of your new index. This is to avoid that James re-creates index upon
 restart
 
diff --git a/server/apps/distributed-app/docs/modules/ROOT/pages/operate/webadmin.adoc b/server/apps/distributed-app/docs/modules/ROOT/pages/operate/webadmin.adoc
index 9ae1f6b2cb..3cef0aa3b7 100644
--- a/server/apps/distributed-app/docs/modules/ROOT/pages/operate/webadmin.adoc
+++ b/server/apps/distributed-app/docs/modules/ROOT/pages/operate/webadmin.adoc
@@ -73,7 +73,7 @@ explanations.
 Supported health checks include:
 
 * *Cassandra backend*: Cassandra storage.
-* *ElasticSearch Backend*: ElasticSearch storage.
+* *OpenSearch Backend*: OpenSearch storage.
 * *EventDeadLettersHealthCheck*
 * *Guice application lifecycle*
 * *JPA Backend*: JPA storage.
@@ -1312,7 +1312,7 @@ Since this is a somewhat expensive operation, the task is throttled to one user
 per second. You may speed it up via `usersPerSecond=10` for example. But keep
 in mind that a high rate might overwhelm your database or blob store.
 
-*Scanning search only:* (unsupported for Lucene and ElasticSearch search implementations) +
+*Scanning search only:* (unsupported for Lucene and OpenSearch search implementations) +
 Some mail clients can add an `Expires` header (RFC 4021) to their messages.
 Instead of specifying an absolute age, you may choose to delete only such
 messages where the expiration date from this header lies in the past:
diff --git a/server/apps/distributed-app/docs/modules/ROOT/pages/run/index.adoc b/server/apps/distributed-app/docs/modules/ROOT/pages/run/index.adoc
index 192508cb8b..8290f74be4 100644
--- a/server/apps/distributed-app/docs/modules/ROOT/pages/run/index.adoc
+++ b/server/apps/distributed-app/docs/modules/ROOT/pages/run/index.adoc
@@ -9,7 +9,7 @@ Build your own Apache James Distributed artifacts and start xref:run/run-java.ad
 
 == Run with Docker
 
-We have prepared a docker-compose for Apache James to run with Cassandra & ElasticSearch. 
+We have prepared a docker-compose for Apache James to run with Cassandra & OpenSearch.
 
 You can start xref:run/run-docker.adoc[Running James with few simple Docker commands].
 
diff --git a/server/apps/distributed-app/docs/modules/ROOT/pages/run/k8s-checklist.adoc b/server/apps/distributed-app/docs/modules/ROOT/pages/run/k8s-checklist.adoc
index 0da61b5098..df957765d6 100644
--- a/server/apps/distributed-app/docs/modules/ROOT/pages/run/k8s-checklist.adoc
+++ b/server/apps/distributed-app/docs/modules/ROOT/pages/run/k8s-checklist.adoc
@@ -21,7 +21,7 @@ With those you should be able to startup James for first tests without having it
 - [ ] Put valid Cassandra keyspaces in the configuration.
 - [ ] Have an appropriate email domain (Contact your Domain Service Provider)
 - [ ] Create your Domain SPF and DKIM Record. See document [here](https://james.apache.org/howTo/)
-- [ ] ElasticSearch nodes deployed.
+- [ ] OpenSearch nodes deployed.
 - [ ] DNS registered entries for JMAP, IMAP, SMTP, Webadmin.
 - [ ] Enable Ingress and create the secret for TLS certificate used by Ingress.
  * Preproduction: Usually, we use link:https://github.com/jetstack/cert-manager[cert-manager] to request a Let's Encrypt Certificate. Remember to use the full chain certificate. You can verify that your certificate works well with `openssl` before adding 
diff --git a/server/apps/distributed-app/docs/modules/ROOT/pages/run/k8s-secrets.adoc b/server/apps/distributed-app/docs/modules/ROOT/pages/run/k8s-secrets.adoc
index 8a31e12d8b..fe65647701 100644
--- a/server/apps/distributed-app/docs/modules/ROOT/pages/run/k8s-secrets.adoc
+++ b/server/apps/distributed-app/docs/modules/ROOT/pages/run/k8s-secrets.adoc
@@ -23,9 +23,9 @@ https://github.com/jkroepke/helm-secrets
 
 |cassandraPassword |Mandatory |The password fort Cassandra access
 
-|esUser |Optional |The user for Elasticsearch access
+|esUser |Optional |The user for OpenSearch access
 
-|esPassword |Optional |The password for Elasticsearch access
+|esPassword |Optional |The password for OpenSearch access
 
 |dkimPrivateKey |Optional |The private key for the generated DKIM
 
diff --git a/server/apps/distributed-app/docs/modules/ROOT/pages/run/k8s-values.adoc b/server/apps/distributed-app/docs/modules/ROOT/pages/run/k8s-values.adoc
index 21908c7e8e..b24ebd8ba1 100644
--- a/server/apps/distributed-app/docs/modules/ROOT/pages/run/k8s-values.adoc
+++ b/server/apps/distributed-app/docs/modules/ROOT/pages/run/k8s-values.adoc
@@ -47,7 +47,7 @@ James data
 the Cassandra cache
 
 |jamesEsMailboxIndex |mailbox_v1 |The index used for mailbox in
-Elasticsearch. The default value should be enough, but in case you had
+OpenSearch. The default value should be enough, but in case you had
 issues and needed to create a new index, this will allow you to point
 James to it
 
@@ -61,7 +61,7 @@ the system), `+ignore+` (Ignore SSL Validation check (not recommended)),
 `+override+` (override the SSL Context to use a custom TrustStore
 containing ES server’s certificate)
 
-|jamesEsHostNameVerifier |default |Configure Elasticsearch rest client
+|jamesEsHostNameVerifier |default |Configure OpenSearch rest client
 to use host name verifier during SSL handshake: `+default+` (using the
 default hostname verifier provided by apache http client),
 `+accept_any_hostname+` (accept any host (not recommended))
@@ -136,33 +136,33 @@ their IP addresses. Parameters for this mode are:
 |ips |1.2.3.4, 5.6.7.8, 9.10.11.12 |The list of Cassandra IP nodes.
 |===
 
-=== Elasticsearch values
+=== OpenSearch values
 
-There is two ways to deploy Elasticsearch in our Helm packages, defined
+There is two ways to deploy OpenSearch in our Helm packages, defined
 by the `+deploy+` field.
 
 ==== as-pod
 
-Elasticsearch has been deployed as pods in the cluster. Parameters for
+OpenSearch has been deployed as pods in the cluster. Parameters for
 this mode are:
 
 [cols="<,<,<",options="header",]
 |===
 |Field |Default value |Description
-|replicaCount |1 |The number of ElasticSearch pods
+|replicaCount |1 |The number of OpenSearch pods
 
-|namespace | change-me | Namespace of ElasticSearch deployment
+|namespace | change-me | Namespace of OpenSearch deployment
 |===
 
-NOTE: Pod name must match template format: `elasticsearch-01.namespace:9200,elasticsearch-02.namespace:9200`
+NOTE: Pod name must match template format: `opensearch-01.namespace:9200,opensearch-02.namespace:9200`
 
 ==== as-ref
 
-ElasticSearch has been deployed in VMs and the nodes can be accessed
+OpenSearch has been deployed in VMs and the nodes can be accessed
 through their IP addresses. Parameters for this mode are:
 
 [cols="<,<,<",options="header",]
 |===
 |Field |Default value |Description
-|ips |1.2.3.4, 5.6.7.8, 9.10.11.12 |The list of ElasticSearch IP nodes.
+|ips |1.2.3.4, 5.6.7.8, 9.10.11.12 |The list of OpenSearch IP nodes.
 |===
diff --git a/server/apps/distributed-app/docs/modules/ROOT/pages/run/run-docker.adoc b/server/apps/distributed-app/docs/modules/ROOT/pages/run/run-docker.adoc
index 95b285912a..7961b74aac 100644
--- a/server/apps/distributed-app/docs/modules/ROOT/pages/run/run-docker.adoc
+++ b/server/apps/distributed-app/docs/modules/ROOT/pages/run/run-docker.adoc
@@ -7,7 +7,7 @@
 Requirements: docker & docker-compose installed.
 
 When you try James this way, you will use the most current state of James.
-It will be configured to run with Cassandra & ElasticSearch.
+It will be configured to run with Cassandra & OpenSearch.
 All those three components will be started with a single command.
 
 You can retrieve the docker-compose file : ( docker-compose file and james image name should be changed) 
@@ -63,15 +63,15 @@ You need a running *Zenko Cloudserver* objectstorage in docker which connects to
 
     $ docker run -d --network james --env 'REMOTE_MANAGEMENT_DISABLE=1' --env 'SCALITY_ACCESS_KEY_ID=accessKey1' --env 'SCALITY_SECRET_ACCESS_KEY=secretKey1' --name=s3 zenko/cloudserver:8.2.6
 
-You need a running *ElasticSearch* in docker which connects to *james* network. To achieve this run:
+You need a running *OpenSearch* in docker which connects to *james* network. To achieve this run:
 
-    $ docker run -d --network james --name=elasticsearch --env 'discovery.type=single-node' docker.elastic.co/elasticsearch/elasticsearch:7.10.2
+$ docker run -d --network james -p 9200:9200 --name=opensearch --env 'discovery.type=single-node' opensearchproject/opensearch:2.1.0
 
 If you want to use all the JMAP search capabilities, you may also need to start Tika container which connects to *james* network:
 
     $ docker run -d --network james --name=tika apache/tika:1.28.2
 
-You can find more explanation on the need of Tika in this page http://james.apache.org/server/config-elasticsearch.html
+You can find more explanation on the need of Tika in this xref:configure/tika.adoc[page].
 
 We need to provide the key we will use for TLS. For obvious reasons, this is not provided in this git.
 
@@ -112,7 +112,7 @@ Or by mapping the 4000 port to the IP of the desired network interface, for exam
 
 === Handling attachment indexing
 
-You can handle attachment text extraction before indexing in ElasticSearch. This makes attachments searchable. To enable this:
+You can handle attachment text extraction before indexing in OpenSearch. This makes attachments searchable. To enable this:
 
 Run tika connect to *james* network:
 
diff --git a/server/apps/distributed-app/docs/modules/ROOT/pages/run/run-java.adoc b/server/apps/distributed-app/docs/modules/ROOT/pages/run/run-java.adoc
index 469289d6e9..7d62facae4 100644
--- a/server/apps/distributed-app/docs/modules/ROOT/pages/run/run-java.adoc
+++ b/server/apps/distributed-app/docs/modules/ROOT/pages/run/run-java.adoc
@@ -6,7 +6,7 @@
 === Requirements
 
 * Java 11 SDK
-* Docker ∕ ElasticSearch 7.10.2, RabbitMQ Management 3.8.18, S3 compatible
+* Docker ∕ OpenSearch 2.1.0, RabbitMQ Management 3.8.18, S3 compatible
 ObjectStorage and Cassandra 3.11.10
 * Maven 3
 
@@ -30,7 +30,7 @@ mvn clean install
 === Requirements
 
 * Cassandra 3.11.10
-* ElasticSearch 7.10.2
+* OpenSearch 2.1.0
 * RabbitMQ-Management 3.8.17
 * Swift ObjectStorage 2.15.1 or Zenko Cloudserver or AWS S3
 
@@ -53,13 +53,13 @@ following command:
 $ keytool -genkey -alias james -keyalg RSA -keystore conf/keystore
 ----
 
-You need to have a Cassandra, ElasticSearch, S3 and RabbitMQ instance
+You need to have a Cassandra, OpenSearch, S3 and RabbitMQ instance
 running. You can either install the servers or launch them via docker:
 
 [source,bash]
 ----
 $ docker run -d -p 9042:9042 --name=cassandra cassandra:3.11.10
-$ docker run -d -p 9200:9200 --name=elasticsearch --env 'discovery.type=single-node' docker.elastic.co/elasticsearch/elasticsearch:7.10.2
+$ docker run -d --network james -p 9200:9200 --name=opensearch --env 'discovery.type=single-node' opensearchproject/opensearch:2.1.0
 $ docker run -d -p 5672:5672 -p 15672:15672 --name=rabbitmq rabbitmq:3.9.18-management
 $ docker run -d --env 'REMOTE_MANAGEMENT_DISABLE=1' --env 'SCALITY_ACCESS_KEY_ID=accessKey1' --env 'SCALITY_SECRET_ACCESS_KEY=secretKey1' --name=s3 zenko/cloudserver:8.2.6
 ----
diff --git a/server/apps/distributed-app/docs/modules/ROOT/pages/run/run-kubernetes.adoc b/server/apps/distributed-app/docs/modules/ROOT/pages/run/run-kubernetes.adoc
index de3911d01a..fb4ab3fb10 100644
--- a/server/apps/distributed-app/docs/modules/ROOT/pages/run/run-kubernetes.adoc
+++ b/server/apps/distributed-app/docs/modules/ROOT/pages/run/run-kubernetes.adoc
@@ -13,9 +13,9 @@ Before runnning the Helm chart, James should have particularly access to the fol
 
 Apache Cassandra::
 - You can deploy Cassandra on Kubernetes with a link:https://github.com/bitnami/charts/tree/master/bitnami/cassandra[Cassandra chart] for testing purpose. However we would recommend running Cassandra on VirtualMachine for better stablilty.
-ElastiSearch:: 
-- Starting from `james:distributed-3.7.0` we have been using `elasticsearch-oss-7.10.2` as default version. Please check ElasticSearch link:https://www.elastic.co/downloads/past-releases#elasticsearch-oss[Release Page] for download.
-RabbitMQ:: 
+OpenSearch::
+- OpenSearch community maintains link:https://github.com/opensearch-project/helm-charts[Helm charts]
+RabbitMQ::
 - link:https://github.com/rabbitmq/cluster-operator[RabbitMQ Cluster Operator] is a custom Kubernetes resource designed for the lifecycle (creation, upgrade, graceful shutdown) of a RabbitMQ cluster. Using Quickstart setup is enough for James deployment.
 
 


---------------------------------------------------------------------
To unsubscribe, e-mail: notifications-unsubscribe@james.apache.org
For additional commands, e-mail: notifications-help@james.apache.org