Fix version check regexes and allow any 7.x and 8.x versions

The regex patterns were glob expressions but were used to create Java
regular expressions which is wrong. Fix the patterns.

Relax the rules to allow any ElasticSearch 7.x and 8.x server version
since the low-level REST client documentation says [1]:

"There is no relation between the client version and the Elasticsearch
version that the client can communicate with. The low-level REST
client is compatible with all Elasticsearch versions."

Also allow non-releases like alpha, beta or release candidates.

[1] https://www.elastic.co/guide/en/elasticsearch/client/java-api-client/current/java-rest-low-usage-maven.html

Change-Id: Ia14678200a9b92bbe195b176321e34e2bba7b92d
diff --git a/src/main/java/com/google/gerrit/elasticsearch/ElasticVersion.java b/src/main/java/com/google/gerrit/elasticsearch/ElasticVersion.java
index 43cee5a..1427e05 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_17("7.17.*"),
-  V8_15("8.15.*");
+  V7("7\\.\\d+\\.\\d+.*"),
+  V8("8\\.\\d+\\.\\d+.*");
 
   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 68dca7f..5e4fd89 100644
--- a/src/test/java/com/google/gerrit/elasticsearch/ElasticContainer.java
+++ b/src/test/java/com/google/gerrit/elasticsearch/ElasticContainer.java
@@ -89,9 +89,9 @@
   private static DockerImageName getImageName(ElasticVersion version) {
     DockerImageName image = DockerImageName.parse("docker.elastic.co/elasticsearch/elasticsearch");
     switch (version) {
-      case V7_17:
+      case V7:
         return image.withTag("7.17.24");
-      case V8_15:
+      case V8:
         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 5e35b11..eb16af5 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_17);
+    startIndexService(ElasticVersion.V7);
   }
 }
diff --git a/src/test/java/com/google/gerrit/elasticsearch/ElasticV7QueryChangesTest.java b/src/test/java/com/google/gerrit/elasticsearch/ElasticV7QueryChangesTest.java
index 3ce57a1..a319bfe 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_17);
+    startIndexService(ElasticVersion.V7);
   }
 }
diff --git a/src/test/java/com/google/gerrit/elasticsearch/ElasticV7QueryGroupsTest.java b/src/test/java/com/google/gerrit/elasticsearch/ElasticV7QueryGroupsTest.java
index 54c2b12..fd77ea7 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_17);
+    startIndexService(ElasticVersion.V7);
   }
 }
diff --git a/src/test/java/com/google/gerrit/elasticsearch/ElasticV7QueryProjectsTest.java b/src/test/java/com/google/gerrit/elasticsearch/ElasticV7QueryProjectsTest.java
index db9f1d0..dd2e8b0 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_17);
+    startIndexService(ElasticVersion.V7);
   }
 }
diff --git a/src/test/java/com/google/gerrit/elasticsearch/ElasticV8QueryAccountsTest.java b/src/test/java/com/google/gerrit/elasticsearch/ElasticV8QueryAccountsTest.java
index d3874b8..4ea1b06 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_15);
+    startIndexService(ElasticVersion.V8);
   }
 }
diff --git a/src/test/java/com/google/gerrit/elasticsearch/ElasticV8QueryChangesTest.java b/src/test/java/com/google/gerrit/elasticsearch/ElasticV8QueryChangesTest.java
index 6f8d4b0..c4622fd 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_15);
+    startIndexService(ElasticVersion.V8);
   }
 }
diff --git a/src/test/java/com/google/gerrit/elasticsearch/ElasticV8QueryGroupsTest.java b/src/test/java/com/google/gerrit/elasticsearch/ElasticV8QueryGroupsTest.java
index a8dfc7e..e18e07a 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_15);
+    startIndexService(ElasticVersion.V8);
   }
 }
diff --git a/src/test/java/com/google/gerrit/elasticsearch/ElasticV8QueryProjectsTest.java b/src/test/java/com/google/gerrit/elasticsearch/ElasticV8QueryProjectsTest.java
index 1a5e3c7..9277b4b 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_15);
+    startIndexService(ElasticVersion.V8);
   }
 }
diff --git a/src/test/java/com/google/gerrit/elasticsearch/ElasticVersionTest.java b/src/test/java/com/google/gerrit/elasticsearch/ElasticVersionTest.java
index a0c0ba1..aa5fb72 100644
--- a/src/test/java/com/google/gerrit/elasticsearch/ElasticVersionTest.java
+++ b/src/test/java/com/google/gerrit/elasticsearch/ElasticVersionTest.java
@@ -22,12 +22,25 @@
 public class ElasticVersionTest {
   @Test
   public void supportedVersion() throws Exception {
-    assertThat(ElasticVersion.forVersion("7.17.0")).isEqualTo(ElasticVersion.V7_17);
-    assertThat(ElasticVersion.forVersion("7.17.1")).isEqualTo(ElasticVersion.V7_17);
+    assertThat(ElasticVersion.forVersion("7.0.0-alpha1")).isEqualTo(ElasticVersion.V7);
+    assertThat(ElasticVersion.forVersion("7.0.0-beta1")).isEqualTo(ElasticVersion.V7);
+    assertThat(ElasticVersion.forVersion("7.0.0-rc2")).isEqualTo(ElasticVersion.V7);
+    assertThat(ElasticVersion.forVersion("7.0.10")).isEqualTo(ElasticVersion.V7);
+    assertThat(ElasticVersion.forVersion("7.16.0")).isEqualTo(ElasticVersion.V7);
+    assertThat(ElasticVersion.forVersion("7.16.1")).isEqualTo(ElasticVersion.V7);
+    assertThat(ElasticVersion.forVersion("7.17.0")).isEqualTo(ElasticVersion.V7);
+    assertThat(ElasticVersion.forVersion("7.17.1")).isEqualTo(ElasticVersion.V7);
 
-    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);
+    assertThat(ElasticVersion.forVersion("8.0.0-alpha1")).isEqualTo(ElasticVersion.V8);
+    assertThat(ElasticVersion.forVersion("8.0.0-beta1")).isEqualTo(ElasticVersion.V8);
+    assertThat(ElasticVersion.forVersion("8.0.0-rc2")).isEqualTo(ElasticVersion.V8);
+    assertThat(ElasticVersion.forVersion("8.0.10")).isEqualTo(ElasticVersion.V8);
+    assertThat(ElasticVersion.forVersion("8.9.0")).isEqualTo(ElasticVersion.V8);
+    assertThat(ElasticVersion.forVersion("8.9.1")).isEqualTo(ElasticVersion.V8);
+    assertThat(ElasticVersion.forVersion("8.9.2")).isEqualTo(ElasticVersion.V8);
+    assertThat(ElasticVersion.forVersion("8.15.0")).isEqualTo(ElasticVersion.V8);
+    assertThat(ElasticVersion.forVersion("8.15.1")).isEqualTo(ElasticVersion.V8);
+    assertThat(ElasticVersion.forVersion("8.15.2")).isEqualTo(ElasticVersion.V8);
   }
 
   @Test