This is an automated email from the ASF dual-hosted git repository.
kezhenxu94 pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/skywalking.git
The following commit(s) were added to refs/heads/master by this push:
new dddc3b51be Support Elasticsearch 9.x as storage (#13957)
dddc3b51be is described below
commit dddc3b51be9d027755d48e99f72b362e969ccecd
Author: kezhenxu94 <[email protected]>
AuthorDate: Fri Jul 24 20:19:39 2026 +0800
Support Elasticsearch 9.x as storage (#13957)
The ES client version gate capped at major == 8, so a server reporting
major 9 fell through to UnsupportedOperationException and OAP refused to
start against an Elasticsearch 9 cluster. ES 9 keeps the same REST
surface the ES 8 path already uses (typeless document writes and
composable index templates), so admit major >= 8 to that path.
Add ES 9.3.0 to the module IT (ElasticSearchIT) and a new Storage ES
9.3.0 e2e case alongside the existing 8.18.8 coverage; update the storage
docs and changelog.
---
.github/workflows/skywalking.yaml | 3 +++
docs/en/changes/changes.md | 1 +
docs/en/setup/backend/storages/elasticsearch.md | 2 +-
.../skywalking/library/elasticsearch/ElasticSearchVersion.java | 2 +-
.../apache/skywalking/library/elasticsearch/ElasticSearchIT.java | 7 +++++++
5 files changed, 13 insertions(+), 2 deletions(-)
diff --git a/.github/workflows/skywalking.yaml
b/.github/workflows/skywalking.yaml
index ae0e30d2b5..dc8d21f766 100644
--- a/.github/workflows/skywalking.yaml
+++ b/.github/workflows/skywalking.yaml
@@ -377,6 +377,9 @@ jobs:
- name: Storage ES 8.18.8
config: test/e2e-v2/cases/storage/es/e2e.yaml
env: ES_VERSION=8.18.8
+ - name: Storage ES 9.3.0
+ config: test/e2e-v2/cases/storage/es/e2e.yaml
+ env: ES_VERSION=9.3.0
- name: Storage OpenSearch 2.4.0
config: test/e2e-v2/cases/storage/opensearch/e2e.yaml
env: OPENSEARCH_VERSION=2.4.0
diff --git a/docs/en/changes/changes.md b/docs/en/changes/changes.md
index 12ff3aae95..e90572a995 100644
--- a/docs/en/changes/changes.md
+++ b/docs/en/changes/changes.md
@@ -255,6 +255,7 @@
admin-host only" entry above for the public REST retirement.
#### OAP Server
+* Support Elasticsearch 9.x as storage.
* Add Node.js runtime metrics via the Node.js agent **`MeterReportService`**
pipeline (`meter_instance_nodejs_*`, 1s collect/report). OAP analyzes raw
meters through `nodejs-runtime.yaml`. Node.js E2E asserts six
`meter_instance_nodejs_*` metrics (`test/e2e-v2/cases/nodejs/e2e.yaml`).
* Add PHP runtime PHM meter analyzer (`php-runtime.yaml`) for SkyWalking PHP
agent process
metrics (CPU, memory, virtual memory, thread count, open file descriptors
sampled from
diff --git a/docs/en/setup/backend/storages/elasticsearch.md
b/docs/en/setup/backend/storages/elasticsearch.md
index 2f6ec21ba5..e83892fe7d 100644
--- a/docs/en/setup/backend/storages/elasticsearch.md
+++ b/docs/en/setup/backend/storages/elasticsearch.md
@@ -37,7 +37,7 @@ SkyWalking rebuilds the ElasticSearch client on top of
ElasticSearch REST API an
correct request formats according to the server-side version, hence you don't
need to download different binaries
and don't need to configure different storage selectors for different
ElasticSearch server-side versions anymore.
-For now, SkyWalking supports ElasticSearch 7.x, ElasticSearch 8.x, and
OpenSearch 1.x, their
+For now, SkyWalking supports ElasticSearch 7.x, ElasticSearch 8.x,
ElasticSearch 9.x, and OpenSearch 1.x, their
configurations are as follows:
_Notice, ElasticSearch 6 worked and is not promised due to end of life
officially._
diff --git
a/oap-server/server-library/library-elasticsearch-client/src/main/java/org/apache/skywalking/library/elasticsearch/ElasticSearchVersion.java
b/oap-server/server-library/library-elasticsearch-client/src/main/java/org/apache/skywalking/library/elasticsearch/ElasticSearchVersion.java
index 97cd695fa3..d673cb91e9 100644
---
a/oap-server/server-library/library-elasticsearch-client/src/main/java/org/apache/skywalking/library/elasticsearch/ElasticSearchVersion.java
+++
b/oap-server/server-library/library-elasticsearch-client/src/main/java/org/apache/skywalking/library/elasticsearch/ElasticSearchVersion.java
@@ -64,7 +64,7 @@ public final class ElasticSearchVersion {
}
return;
}
- if (major == 8) {
+ if (major >= 8) { // 8.x, 9.x and later: typeless docs +
composable index templates
requestFactory = new V81RequestFactory(this);
codec = V78Codec.INSTANCE;
return;
diff --git
a/oap-server/server-library/library-elasticsearch-client/src/test/java/org/apache/skywalking/library/elasticsearch/ElasticSearchIT.java
b/oap-server/server-library/library-elasticsearch-client/src/test/java/org/apache/skywalking/library/elasticsearch/ElasticSearchIT.java
index 295a9eb81a..659954f60b 100644
---
a/oap-server/server-library/library-elasticsearch-client/src/test/java/org/apache/skywalking/library/elasticsearch/ElasticSearchIT.java
+++
b/oap-server/server-library/library-elasticsearch-client/src/test/java/org/apache/skywalking/library/elasticsearch/ElasticSearchIT.java
@@ -90,6 +90,13 @@ public class ElasticSearchIT {
.withTag("8.9.0"))
.withEnv("xpack.security.enabled", "false")
},
+ {
+ "ElasticSearch 9.3.0",
+ new ElasticsearchContainer(
+
DockerImageName.parse("docker.elastic.co/elasticsearch/elasticsearch")
+ .withTag("9.3.0"))
+ .withEnv("xpack.security.enabled", "false")
+ },
{
"OpenSearch 1.0.0",
new ElasticsearchContainer(