diff --git a/src/main/java/com/google/gerrit/elasticsearch/ElasticVersion.java b/src/main/java/com/google/gerrit/elasticsearch/ElasticVersion.java
index 2fad786..43cee5a 100644
--- a/src/main/java/com/google/gerrit/elasticsearch/ElasticVersion.java
+++ b/src/main/java/com/google/gerrit/elasticsearch/ElasticVersion.java
@@ -18,8 +18,8 @@
 import java.util.regex.Pattern;
 
 public enum ElasticVersion {
-  V7_16("7.16.*"),
-  V8_9("8.9.*");
+  V7_17("7.17.*"),
+  V8_15("8.15.*");
 
   private final String version;
   private final Pattern pattern;
diff --git a/src/test/java/com/google/gerrit/elasticsearch/ElasticContainer.java b/src/test/java/com/google/gerrit/elasticsearch/ElasticContainer.java
index a65e57c..68dca7f 100644
--- a/src/test/java/com/google/gerrit/elasticsearch/ElasticContainer.java
+++ b/src/test/java/com/google/gerrit/elasticsearch/ElasticContainer.java
@@ -89,10 +89,10 @@
   private static DockerImageName getImageName(ElasticVersion version) {
     DockerImageName image = DockerImageName.parse("docker.elastic.co/elasticsearch/elasticsearch");
     switch (version) {
-      case V7_16:
-        return image.withTag("7.16.2");
-      case V8_9:
-        return image.withTag("8.9.2");
+      case V7_17:
+        return image.withTag("7.17.24");
+      case V8_15:
+        return image.withTag("8.15.2");
     }
     throw new IllegalStateException("No tests for version: " + version.name());
   }
diff --git a/src/test/java/com/google/gerrit/elasticsearch/ElasticV7QueryAccountsTest.java b/src/test/java/com/google/gerrit/elasticsearch/ElasticV7QueryAccountsTest.java
index a9c8361..5e35b11 100644
--- a/src/test/java/com/google/gerrit/elasticsearch/ElasticV7QueryAccountsTest.java
+++ b/src/test/java/com/google/gerrit/elasticsearch/ElasticV7QueryAccountsTest.java
@@ -19,6 +19,6 @@
 public class ElasticV7QueryAccountsTest extends ElasticAbstractQueryAccountsTest {
   @BeforeClass
   public static void startIndexService() {
-    startIndexService(ElasticVersion.V7_16);
+    startIndexService(ElasticVersion.V7_17);
   }
 }
diff --git a/src/test/java/com/google/gerrit/elasticsearch/ElasticV7QueryChangesTest.java b/src/test/java/com/google/gerrit/elasticsearch/ElasticV7QueryChangesTest.java
index 9961987..3ce57a1 100644
--- a/src/test/java/com/google/gerrit/elasticsearch/ElasticV7QueryChangesTest.java
+++ b/src/test/java/com/google/gerrit/elasticsearch/ElasticV7QueryChangesTest.java
@@ -19,6 +19,6 @@
 public class ElasticV7QueryChangesTest extends ElasticAbstractQueryChangesTest {
   @BeforeClass
   public static void startIndexService() {
-    startIndexService(ElasticVersion.V7_16);
+    startIndexService(ElasticVersion.V7_17);
   }
 }
diff --git a/src/test/java/com/google/gerrit/elasticsearch/ElasticV7QueryGroupsTest.java b/src/test/java/com/google/gerrit/elasticsearch/ElasticV7QueryGroupsTest.java
index 9a48181..54c2b12 100644
--- a/src/test/java/com/google/gerrit/elasticsearch/ElasticV7QueryGroupsTest.java
+++ b/src/test/java/com/google/gerrit/elasticsearch/ElasticV7QueryGroupsTest.java
@@ -19,6 +19,6 @@
 public class ElasticV7QueryGroupsTest extends ElasticAbstractQueryGroupsTest {
   @BeforeClass
   public static void startIndexService() {
-    startIndexService(ElasticVersion.V7_16);
+    startIndexService(ElasticVersion.V7_17);
   }
 }
diff --git a/src/test/java/com/google/gerrit/elasticsearch/ElasticV7QueryProjectsTest.java b/src/test/java/com/google/gerrit/elasticsearch/ElasticV7QueryProjectsTest.java
index f37bbff..db9f1d0 100644
--- a/src/test/java/com/google/gerrit/elasticsearch/ElasticV7QueryProjectsTest.java
+++ b/src/test/java/com/google/gerrit/elasticsearch/ElasticV7QueryProjectsTest.java
@@ -19,6 +19,6 @@
 public class ElasticV7QueryProjectsTest extends ElasticAbstractQueryProjectsTest {
   @BeforeClass
   public static void startIndexService() {
-    startIndexService(ElasticVersion.V7_16);
+    startIndexService(ElasticVersion.V7_17);
   }
 }
diff --git a/src/test/java/com/google/gerrit/elasticsearch/ElasticV8QueryAccountsTest.java b/src/test/java/com/google/gerrit/elasticsearch/ElasticV8QueryAccountsTest.java
index b1ef2e5..d3874b8 100644
--- a/src/test/java/com/google/gerrit/elasticsearch/ElasticV8QueryAccountsTest.java
+++ b/src/test/java/com/google/gerrit/elasticsearch/ElasticV8QueryAccountsTest.java
@@ -19,6 +19,6 @@
 public class ElasticV8QueryAccountsTest extends ElasticAbstractQueryAccountsTest {
   @BeforeClass
   public static void startIndexService() {
-    startIndexService(ElasticVersion.V8_9);
+    startIndexService(ElasticVersion.V8_15);
   }
 }
diff --git a/src/test/java/com/google/gerrit/elasticsearch/ElasticV8QueryChangesTest.java b/src/test/java/com/google/gerrit/elasticsearch/ElasticV8QueryChangesTest.java
index a9a220d..6f8d4b0 100644
--- a/src/test/java/com/google/gerrit/elasticsearch/ElasticV8QueryChangesTest.java
+++ b/src/test/java/com/google/gerrit/elasticsearch/ElasticV8QueryChangesTest.java
@@ -19,6 +19,6 @@
 public class ElasticV8QueryChangesTest extends ElasticAbstractQueryChangesTest {
   @BeforeClass
   public static void startIndexService() {
-    startIndexService(ElasticVersion.V8_9);
+    startIndexService(ElasticVersion.V8_15);
   }
 }
diff --git a/src/test/java/com/google/gerrit/elasticsearch/ElasticV8QueryGroupsTest.java b/src/test/java/com/google/gerrit/elasticsearch/ElasticV8QueryGroupsTest.java
index 37a204d..a8dfc7e 100644
--- a/src/test/java/com/google/gerrit/elasticsearch/ElasticV8QueryGroupsTest.java
+++ b/src/test/java/com/google/gerrit/elasticsearch/ElasticV8QueryGroupsTest.java
@@ -19,6 +19,6 @@
 public class ElasticV8QueryGroupsTest extends ElasticAbstractQueryGroupsTest {
   @BeforeClass
   public static void startIndexService() {
-    startIndexService(ElasticVersion.V8_9);
+    startIndexService(ElasticVersion.V8_15);
   }
 }
diff --git a/src/test/java/com/google/gerrit/elasticsearch/ElasticV8QueryProjectsTest.java b/src/test/java/com/google/gerrit/elasticsearch/ElasticV8QueryProjectsTest.java
index ace5767..1a5e3c7 100644
--- a/src/test/java/com/google/gerrit/elasticsearch/ElasticV8QueryProjectsTest.java
+++ b/src/test/java/com/google/gerrit/elasticsearch/ElasticV8QueryProjectsTest.java
@@ -19,6 +19,6 @@
 public class ElasticV8QueryProjectsTest extends ElasticAbstractQueryProjectsTest {
   @BeforeClass
   public static void startIndexService() {
-    startIndexService(ElasticVersion.V8_9);
+    startIndexService(ElasticVersion.V8_15);
   }
 }
diff --git a/src/test/java/com/google/gerrit/elasticsearch/ElasticVersionTest.java b/src/test/java/com/google/gerrit/elasticsearch/ElasticVersionTest.java
index b750466..a0c0ba1 100644
--- a/src/test/java/com/google/gerrit/elasticsearch/ElasticVersionTest.java
+++ b/src/test/java/com/google/gerrit/elasticsearch/ElasticVersionTest.java
@@ -22,12 +22,12 @@
 public class ElasticVersionTest {
   @Test
   public void supportedVersion() throws Exception {
-    assertThat(ElasticVersion.forVersion("7.16.0")).isEqualTo(ElasticVersion.V7_16);
-    assertThat(ElasticVersion.forVersion("7.16.1")).isEqualTo(ElasticVersion.V7_16);
+    assertThat(ElasticVersion.forVersion("7.17.0")).isEqualTo(ElasticVersion.V7_17);
+    assertThat(ElasticVersion.forVersion("7.17.1")).isEqualTo(ElasticVersion.V7_17);
 
-    assertThat(ElasticVersion.forVersion("8.9.0")).isEqualTo(ElasticVersion.V8_9);
-    assertThat(ElasticVersion.forVersion("8.9.1")).isEqualTo(ElasticVersion.V8_9);
-    assertThat(ElasticVersion.forVersion("8.9.2")).isEqualTo(ElasticVersion.V8_9);
+    assertThat(ElasticVersion.forVersion("8.15.0")).isEqualTo(ElasticVersion.V8_15);
+    assertThat(ElasticVersion.forVersion("8.15.1")).isEqualTo(ElasticVersion.V8_15);
+    assertThat(ElasticVersion.forVersion("8.15.2")).isEqualTo(ElasticVersion.V8_15);
   }
 
   @Test
